2
我有一個使用SQLDependency監視的SELECT查詢。一切工作正常,但我想臨時掛起依賴關係,而我更新了查詢正在監視的數據集,我知道將從數據庫中觸發更改通知。暫時更新sqldependency通知
目前我設置了一個標誌,標誌着我正在進行更新,讓依賴項觸發,然後我重置它,以便我可以繼續監視查詢。
必須有一個更優雅的方式來做到這一點。
我有一個使用SQLDependency監視的SELECT查詢。一切工作正常,但我想臨時掛起依賴關係,而我更新了查詢正在監視的數據集,我知道將從數據庫中觸發更改通知。暫時更新sqldependency通知
目前我設置了一個標誌,標誌着我正在進行更新,讓依賴項觸發,然後我重置它,以便我可以繼續監視查詢。
必須有一個更優雅的方式來做到這一點。
請注意使用SqlDependency類 - 它有內存泄漏problems。 Hovewer,你可以使用SqlDependency類的開源實現 - SqlDependencyEx。它使用數據庫觸發器和本機Service Broker通知來接收有關表更改的事件。這是一個使用示例:
int changesReceived = 0;
using (SqlDependencyEx sqlDependency = new SqlDependencyEx(
TEST_CONNECTION_STRING, TEST_DATABASE_NAME, TEST_TABLE_NAME))
{
sqlDependency.TableChanged += (o, e) => changesReceived++;
sqlDependency.Start();
// Make table changes.
MakeTableInsertDeleteChanges(changesCount);
// Wait a little bit to receive all changes.
Thread.Sleep(1000);
}
Assert.AreEqual(changesCount, changesReceived);
隨着SqlDependecyEx您可以監視插入和刪除,避免了更新。希望這可以幫助。
您是否可以不停止偵聽器並在更新後啓動它? – 2015-02-06 08:30:55