次の構造の単純なイントラ Web プロジェクトがあります。
Usersession :データベースをチェックして変更をロードし、データのフォーマットを行い、結果をメモリ内のテーブルに入れるタイマーを用意します。
MainForm : IWTimer を使用して、Usersession のメモリ内テーブルが変更されたかどうかを確認し、必要に応じてその内容を更新します。
IWTimer を使用してデータベースを直接チェックすることはありません。これは、ユーザー エクスペリエンスに影響を与えるブラウザーでの待ち時間が望ましくないためです。
問題は、usersession にメッセージ キューがなく、通常のタイマーが機能しないことです。そこで、代わりに Jedi VCL の JvThreadTimer を使用しました。UserSession.Create イベントで作成し、Destroy イベントで停止して解放します。それはうまく機能します。
ただし、サーバー アプリケーションを閉じると、すぐに EidClosedSocket が表示され、「切断されました」というメッセージが表示されます。MainForm/Usersession/ServerControl ユニットの Destroy Events の前に例外が発生したため、例外をトリガーする前にタイマーを停止する方法が見つかりません。
ユーザーセッションでサーバー側のタイマーを設定する適切な方法はありますか、またはブラウザの使用に影響を与えない定期的なデータベースチェックを行う他の方法はありますか?
助けてくれてありがとう。