QA@IT

SQL SERVER (2012)とC#(2010)でのクエリ通知

6520 PV

クエリ通知の取得を複数実施する方法はないでしょうか
http://social.msdn.microsoft.com/Forums/ja-JP/96794ec7-60f9-4ce3-837a-a962181e5814/c40sql-server2012?forum=csharpgeneralja
この辺のサンプルを見てもクエリ通知は1回のみとなっていて、
通知を受けた後、もう一度

m_sqlDependency.OnChange += new OnChangeEventHandler(sqlDependency_OnChange);

なんてやってみても、もうテーブルは変更していないのに
イベントを登録するたびに、無限にイベントが発生してしまいます

パスを一度切断してから、
SqlDependency.Start(strCon);
・・・・
というのを繰り返せば、何とかなるようですが、
もうちょっとスマートに、
テーブルの変更を受信したら
再度
m_sqlDependency.OnChange += new OnChangeEventHandler(sqlDependency_OnChange);
とすルようなシンプルな方法で、変更のたびにイベントを受け続けることは出来ないでしょうか

回答

もう解決されているかもしれませんが、ご参考までに。

Windows アプリケーションでの SqlDependency の使用
http://msdn.microsoft.com/ja-jp/library/a52dhwx7(v=vs.80).aspx

サンプルコードによると、SqlDependency は保持せずに毎回作成し直しています。
(URL から (v=vs.80) を消すと、コードが見やすくなります)

通知のイベントハンドラ内で、古いSqlDependency(Event の sender)からイベントハンドラを削除し、データを取得する際に、新しい SqlDependency を作成しています。

この方法でどうでしょうか。

編集 履歴 (0)
ウォッチ

この質問への回答やコメントをメールでお知らせします。