いくつかの背景: 私はいくつかのフォームなどを含むアプリケーションを作成しています。ユーザーはほとんどの機能を使用するためにログインする必要がありますが、これは今まで問題なく機能していました。ただし、現在、クライアントは、一定の非アクティブ時間後にユーザーをログアウトするように要求しています。問題は、ユーザーがアプリケーションではなく、コンピューター上で引き続きアクティブになる可能性があることです。明確にするために、ユーザーがまだデスクトップと対話している場合でも、ユーザーがアプリケーションで非アクティブになっているときにログアウトする必要があります。
まず、これはかなり単純だと思いました。最後のアクションの時間を覚えておいて、タイマーで現在の時間と継続的に比較し、経過時間が許可された時間よりも長い場合はユーザーをログアウトします。しかし、最後のアクション時間を見つけるのはそれほど簡単ではないかもしれないことに気付きました...
もちろん、次のようなものをコピーして貼り付けることができます
Program.LastActionTime = DateTime.Now;
すべての OnChange、OnClick などのイベントで...しかし、これはアプリケーションのサイズのために大量の作業になるだけでなく...非常に悪い習慣でもあり、そうなると確信しています少なくとも一度は忘れてしまい、全体が信頼できなくなりました (そして壊れているように見えると、バグを再現することはほとんど不可能です!)
それで、より良い方法はありますか?