以下代码将 1 到 100 的数字相加并返回总和。我想要做的是在 backgroundworker 中运行计算并返回一个值。问题在于 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;
附录:在同一线程上发送消息泵而不是在后台工作程序上运行它会更好吗?
此外,这只是示例代码,我的实际代码需要一分多钟才能完成。
最佳答案
订阅RunWorkerCompleted
事件。该事件包含后台操作的返回值。
当然,该值将从 DoWorkEventHandler
内部返回,如下所示:
b.DoWork += new DoWorkEventHandler(
delegate(object sender, DoWorkEventArgs e) {
double returnValue = 0;
for(int i=0;i<100;i++){
returnValue += (i+1);
}
e.Result = returnValue;
}
);
关于c# - BackgroundWorker 返回一个值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5224276/