نمایش نتایج 1 تا 3 از 3

نام تاپیک: انقضای برنامه

  1. #1

    انقضای برنامه

    سلام دوستان
    من یه برنامه ویندوزی دارم. میخوام کاری کنم که اگه کاربر لاگین کرد و به مدت 5 دقیقه از زمان لاگینش گذشت و در برنامه کاری انجام نداد، برنامه بسته بشه و نیاز به لاگین مجدد باشه. ممنون میشم کمکم کنید.

  2. #2

    نقل قول: انقضای برنامه

    سلام
    اگر شما نخواهید یک سیستم کنترل دسترسی پیاده سازی کنید ، که کار مفصلی رو هم میطلبه. (مدیریت نشست ها سمت سرویس باید باشه و سیستم به صورت متمرکز کار کنه) باید مسیر زیر رو طی کنید:

    اما راه حل دم دستی ، شما یک ماژول با تعدادی پراپرتی تعریف می کنید که یکیش زمان آخرین فعالیت کاربر هست (نمونه زیر ، ساده ترین حالت هست)، شما میتونید با هر کاری که کاربر در برنامه انجام داد ، زمان آخرین فعالیت رو آپدیت کنید و یک تایمر وظیفه کنترل اون زمان رو داشته باشه ، مثلا هر یک دقیقه چک کنه و اگر فاصله بیش از 5 دقیقه بود برنامه رو با نمایش پیغامی ببنده

    برای مثال چیزی شبیه به این ماژول

    Imports System.Timers


    Module UserSession


    #Region "Private Fields"


    Private ReadOnly SessionTimer As Timer


    #End Region

    #Region "Ctor/Dtor"


    Sub New()


    SessionTimer = New Timer()
    AddHandler SessionTimer.Elapsed, AddressOf OnTimedEvent


    'Set to one minute
    SessionTimer.Interval = 60000
    SessionTimer.Enabled = True
    SessionTimer.Start()


    End Sub


    #End Region


    #Region "Event Handlers"


    Private Sub OnTimedEvent(source As Object, e As ElapsedEventArgs)


    If (DateTime.Now - LastActivity).TotalMinutes > 5 Then
    MessageBox.Show("Session has been expired, please login again")
    Application.Exit()
    End If


    End Sub


    #End Region


    #Region "Properties"


    Property Username() As String


    Property LoginTime() As DateTime


    Property LastActivity() As DateTime


    #End Region


    End Module


    توی فرم لاگین ، بعد از اعتبار سنجی که انجام دادید (چک کردن صحت نام کاربری و رمز عبور) ، مقادیر این ماژول رو پر کنید

    UserSession.Username = TxtUsername.Text
    UserSession.LoginTime = DateTime.Now
    UserSession.LastActivity = DateTime.Now


    الان بعد از 5 دقیقه ، اگر مقدار LastActivity رو آپدیت نکنید برنامتون بسته میشه

    حالا توی برنامه مثلا با کلیک روی یک دکمه باید مقدار فیلد مذکور رو آپدیت کنید

    Private Sub BtnDoSomething_Click(sender As Object, e As EventArgs) Handles BtnDoSomething.Click
    UserSession.LastActivity = DateTime.Now
    End Sub


    خب؟ حالا برنامه تا 5 دقیقه بعد از کلیک روی دکمه DoSomething باز میمونه (البته بسته به اینکه چه زمانی آپدیت انجام بشه ، حداقل یک ثانیه و حداکثر 59 ثانیه بعد از گذشت 5 دقیقه بسته میشه ، به علت اینکه تایمر هر یک دقیقه چک میکنه که مشکلی هم نیست البته)
    قوانین سایت برنامه نویس [ به سوالات از طریق پیام خصوصی پاسخ داده نمی شود ]

  3. #3

    نقل قول: انقضای برنامه

    استاد آشتیانی عزیز ممنون بابت وقتی که گذاشتید. همه چیز عالیه. فقط یه سئوال من چطوری میتونم بگم اگه ماوس حرکت کرد یا یه کلید از کیبورد فشرده شد، اون مقدار آپدیت بشه و عملیات خروج از برنامه صورت نگیره. دقیقا یه چیزی شبیه اسکرین سیور ویندوز

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •