データベースの変更を監視するために SqlDependency を使用しています。例を理解しやすくするために、これらは株価であるとしましょう。また、アプリケーションは (別の) SqlDependeny-Object を使用して、アプリケーションにキャッシュされている静的データへの変更を監視します。
私がしていることは、アプリケーションを起動するときに依存関係を開始し、アプリケーションを閉じるときにSqlDependency.Start()
呼び出すことです。SqlDependeny.Stop
これまでのところ、すべてがうまく機能しています。
これで、ユーザーが銘柄記号を選択すると、別の SqlDependency が設定され、変更が通知され、それに対してアクションを実行できるようになりました。ユーザーが追跡したいシンボルを変更すると、新しい SqlDependency を設定する必要があり、古い SqlDependency をクリアする必要があります。
私の質問は:それは本当ですか?また、特定の依存関係をクリアするにはどうすればよいですか? SqlDependency.Stop()
静的メソッドであり、すべての依存関係を停止します。それでも、SQL サーバーの通知サブスクリプションが本当にクリアされているのか、タイムアウトになるのを待っているだけなのか、まったくわかりません。
これはすべて、SqlDependency を使用してキャッシュを行う正しい方法なのか、それともこれを達成するための優れた簡単な方法があるのかという疑問を提起します。