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

本文关键字:数据库 BackgroundWorker 替换 Async Await | 更新日期: 2023-09-27 17:58:33

我有一个C#类,它使用BackgroundWorker轮询特定的数据库表以获取更改。如果某个内容发生更改,它将引发一个事件。此外,我有一个类Token,它有一个用于此事件的处理程序,基本上将令牌状态设置为"脏"。

现在我问自己,是否还有比每隔几毫秒轮询一次数据库更好的方法。我想在我的代币中制作一个异步方法,比如

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

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

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

是的,肯定有比轮询DB更好的方法。在Windows应用程序中使用SqlDependency

您可以创建一个依赖项对象,SQL Server将在该对象中通知您发生了更改(插入、更新、删除了记录)。