多个后台工作线程 + C#

6
快速问题 - 是否可能同时运行两个后台工作程序?我似乎记得曾经尝试过这样做并出现了错误,也记得读到只能有一个后台工作程序的说法...虽然我找不到另一个明确讨论多个后台工作程序的线程。非常感谢您的任何想法!祝好!
1个回答

18

你可以拥有尽可能多的后台工作者,并且同时运行。例如:

var worker1 = new BackgroundWorker { WorkerReportsProgress = true };
var worker2 = new BackgroundWorker { WorkerReportsProgress = true };
DoWorkEventHandler doWork = (sender, e) =>
{
    for (int i = 0; i < 10; i++)
    {
        var progress = (int)((i + 1) * 100.0 / 10);
        var worker = (BackgroundWorker)sender;
        worker.ReportProgress(progress);
        Thread.Sleep(500);
    }
};
worker1.DoWork += doWork;
worker2.DoWork += doWork;
worker1.ProgressChanged += (sender, e) =>
{
    label1.Text = e.ProgressPercentage.ToString();
};
worker2.ProgressChanged += (sender, e) =>
{
    label2.Text = e.ProgressPercentage.ToString();
};

worker1.RunWorkerAsync();
Thread.Sleep(1000);
worker2.RunWorkerAsync();

为什么不为worker1和worker2创建单独的doWork委托? - CACuzcatlan
举个例子并不是必要的。 - MadBoy
感谢提供的图片作为示例。 - Kay Lee

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接