如何使用.Net c#中的Tasks创建单线程队列?

时间:2016-05-10 17:13:46

标签: c# multithreading task-queue

我有一个监视推送数据库表更改的服务。我目前正在使用静态后台工作程序来调用数据库。为了限制数据库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();
    }
}

0 个答案:

没有答案