我有一个监视推送数据库表更改的服务。我目前正在使用静态后台工作程序来调用数据库。为了限制数据库SELECT调用,我每次运行bgw时都要转储队列。如果需要,队列实际上只是告诉bgw在完成时再次运行。
有没有更好的方法来实现这个任务?
static Queue<int> _Queue = new Queue<int>();
static BackgroundWorker _bgw;
public RunTask()
{
If (_bgw == null)
{
_bgw = new BackgroundWorker();
_bgw.DoWork += (s,e) =>
{ //work}
_bgw.RunWorkerCompleted += (s,e) =>
{
if (_Queue.Any())
{
_Queue.Clear();
_bgw.RunWorkerAsync();
}
}
}
_Queue.Enqueue(1);
if (!_bgw.IsBusy())
{
_Queue.Clear();
_bgw.RunWorkerAsync();
}
}