【发布时间】:2011-01-27 16:14:10
【问题描述】:
快速提问 - 是否可以同时运行两个后台工作人员?我似乎记得尝试过一次并遇到错误,并且似乎还记得读过你只能拥有一个......但我找不到另一个明确谈论拥有多个的线程......
非常感谢任何想法!
干杯
【问题讨论】:
标签: c# multithreading backgroundworker
快速提问 - 是否可以同时运行两个后台工作人员?我似乎记得尝试过一次并遇到错误,并且似乎还记得读过你只能拥有一个......但我找不到另一个明确谈论拥有多个的线程......
非常感谢任何想法!
干杯
【问题讨论】:
标签: c# multithreading backgroundworker
您可以拥有任意数量的后台工作人员并同时运行。示例:
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();
【讨论】: