【发布时间】:2011-03-07 19:31:25
【问题描述】:
以下代码将 1 到 100 的数字相加并返回总和。我要做的是在后台工作程序中运行计算并返回一个值。这样做的问题是 returnValue 在 DoWork 完成之前返回。如何在返回值之前等待我的后台工作人员完成? (我似乎无法将回报放入我的 DoWork...)
double returnValue = 0;
var b = new BackgroundWorker();
b.DoWork += new DoWorkEventHandler(
delegate(object sender, DoWorkEventArgs e) {
for(int i=0;i<100;i++){
returnValue += (i+1);
}
}
);
b.RunWorkerAsync();
return returnValue;
附录:在同一线程上发送消息泵而不是在后台工作人员上运行会更好吗?
另外,这只是示例代码,我的实际代码需要一分钟以上才能完成。
【问题讨论】:
-
您要求做的事情没有意义;您正在尝试在
BackgroundWorker上执行代码,但您还想阻止调用方法返回,直到BackgroundWorker完成。
标签: c# backgroundworker