使用Async / Await替换BackgroundWorker轮询数据库

时间:2014-04-16 14:33:22

标签: c# asynchronous polling

我有一个C#类,它使用BackgroundWorker轮询特定的数据库表以进行更改。如果有什么变化,就会触发一个事件。另外,我有一个类令牌,它具有此事件的处理程序,它基本上将令牌状态设置为"脏"。

现在我问自己是否每隔几毫秒就可以找到比轮询数据库更好的东西。我想在我的令牌中创建一个异步方法,如

public async Task<bool> IsDirty()
{
    return await Something();
}

但是我应该在这等待什么呢?我的BackgroundWorker只有Do_Work和RunWorkerCompleted方法。 BackgroundWorker不需要一直检查,但至少当有人调用/等待IsDirty()方法时。

1 个答案:

答案 0 :(得分:0)

是的,有一些东西肯定比轮询数据库更好。 Using SqlDependency in a Windows Application

您可以创建一个依赖项对象,SQL Server将通知您某些内容已更改(插入,更新,删除了记录)。