2011-02-11 48 views
2

我正在開發一個C#的獨立單用戶桌面應用程序,它需要用戶登錄到應用程序。我想確保當5分鐘左右沒有活動時,應用程序將提示用戶再次登錄。我有幾個解決方案要做到這一點,但似乎並不高效。以前在進行網絡編程時,我能夠使用會話變量來實現這種功能,C#中有類似的功能可用於桌面應用程序。C#桌面應用程序中的會話變量?

+0

你可以使用一個簡單的定時器用於該 – 2011-02-11 02:23:07

+1

可能重複[如何自動註銷在Windows窗體應用程序(http://stackoverflow.com/questions/4603374/how-to-auto-logout-在Windows窗體應用程序) – Gabe 2011-02-11 02:55:46

回答

4

這樣做的一種方法是設置一個始終運行的5分鐘計時器,並在用戶滴答時記錄用戶。然後,您可以從一開始就有任何活動重新啓動計時器。

如果這是一個WinForms應用程序,您可以讓您的頂級窗體實現IMessageFilter。在您的PreFilterMessage函數中,您將重新啓動計時器,並返回false以獲取指示活動的消息(WM_KEYDOWNWM_MOUSEMOVE等)以使所有內容都得到正常處理。

+1

感謝您的輸入。我也有一個類似的解決方案。我會執行這個。 – abduls85 2011-02-11 03:16:46

0

不,但會話狀態只是幫助克服Web應用程序無狀態性質的變量列表。由於桌面應用程序不是無狀態的,因此沒有必要。我只需使用一個簡單的計時器或類似的東西,並在用戶閒置5分鐘後將用戶註銷。

2

您可以隨時在Windows窗體應用程序中添加觸發器以自動註銷。這裏是一個例子鏈接與接受的答案

How can I trigger an auto-logout within a Windows Forms Application?

監控用戶活動,您可以創建一個自定義的基於表單類 從您的申請表格將繼承。您可以在 中訂閱MouseMove和KeyDown事件(將KeyPreview 屬性設置爲true),無論用戶何時激活 ,都會引發其中任一項。然後,您可以創建一個System.Threading.Timer,並將應有的 時間設置爲30分鐘,並在檢測到用戶活動時使用Change()方法 將其推遲。