2011-02-11 10 views
2

私は、ユーザーがアプリケーションにログインする必要がある、C#スタンドアローンのシングルユーザーデスクトップアプリケーションを開発しています。 5分ほどもアクティビティがない場合、アプリケーションはユーザーに再度ログインを促すようにしたいと思います。私はこれを行うにはいくつかの解決策がありますが、効率的ではないようです。これまではWebプログラミングを行っていましたが、セッション変数を使用してこの種の機能を実行することができました。デスクトップアプリケーションに使用できるシンプルなC#の機能があります。C#デスクトップアプリケーションのセッション変数?

+0

[Windowsフォームアプリケーション内で自動ログアウトする方法]の –

+1

の複製が可能な単純なタイマーを使用できます(http://stackoverflow.com/questions/4603374/how-to-auto-logout- window-forms-application内) – Gabe

答えて

4

これを実行する1つの方法は、常に実行されている5分のタイマーを設定し、それがダンプしたときにユーザーをログアウトさせることです。その後、タイマーを最初から再起動することができます。

これはWinFormsアプリケーションの場合、最上位フォームにIMessageFilterを実装することができます。 PreFilterMessage関数では、タイマーを再起動し、すべてが正常に処理されるように、アクティビティ(WM_KEYDOWNWM_MOUSEMOVEなど)を示すメッセージに対してfalseを返します。

+1

入力いただきありがとうございます。私はあまりにも似たような解決策を考えていました。私はこれを実装します。 – abduls85

0

セッションステートは、Webアプリケーションのステートレスな性質を克服するのに役立つ変数のリストに過ぎません。デスクトップアプリケーションはステートレスではないので、必要はありません。私はちょうど単純なタイマーまたは類似のものを使用し、5分間の非アクティブ後にユーザーをログアウトさせます。

2

Windowsフォームアプリケーション内の自動ログアウトにいつでもトリガを追加できます。ここでは、ユーザの活動を監視するために受け入れ答え

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

と例とのリンクがあり、アプリケーションのフォームが継承されるからカスタムフォームベースクラス を作成することができます。ここで MouseMoveとKeyDownイベントを購読することができます(KeyPreview プロパティをtrueに設定します)。どちらもユーザーが アクティブのときに発生します。その後、 時間が30分に設定されたSystem.Threading.Timerを作成し、ユーザーアクティビティが検出されるたびにChange()メソッド を使用して延期することができます。

+0

ご協力ありがとうございます。 – abduls85

関連する問題