如何改变背景工作者的状态?

时间:2015-09-23 19:54:28

标签: c#-4.0 backgroundworker

我正在用C#开发一个应用程序(vs 2015),我遇到了一个问题。

我正在运行一个接收连续图像流的backgroundWorker。我需要在单击按钮时停止或重新启动此流,但我不知道如何更改backgroundWorker的内部状态。我可以将初始参数传递给backgroundWorker,但是如何在异步运行backgroundWorker之后更改其中一个内部参数?

非常感谢你的帮助。 史蒂夫

1 个答案:

答案 0 :(得分:0)

您需要自己跟踪重启。例如,有一个布尔。

private bool _restart = false;

private void button1_Click(object sender, EventArgs e)
{
    _restart = true;
    _backgroundWorker.CancelAsync();
}

private void backgroundWorker_DoWork(object sender, DoWorkEventArgs e)
{
    if (_backgroundWorker.CancellationPending)
    {
        return;
    }
    // do work
}

private void backgroundWorker_WorkComplete(object sender, eventargs e)  //no ide to hand not sure on name/args
{
    if (_restart)
    {
        _restart = false;
        _backgroundWorker.RunWorkerAsync();
    }
}