以下代碼添加從1到100的數字並返回總和。我想要做的是在後臺工作中運行計算並返回一個值。這個問題是在DoWork完成之前返回returnValue。如何在返回值之前等待我的後臺工作人員完成? (我似乎無法把我的DoWork的回報...)BackgroundWorker返回值?
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;
附錄:它會更好發送相同的線程上的消息泵,而不是在後臺工作運行這個的?
此外,這只是示例代碼,我的實際代碼需要一分多鐘才能完成。
幾乎相同的問題,如http://stackoverflow.com/questions/939635/how-to -make-backgroundworker-return-an-object – 2011-03-07 19:37:32
可能的重複http://stackoverflow.com/questions/5182782/c-return-value-from-function-invoked-in-thread/5201814#5201814 – 2011-03-07 19:37:46
你在問什麼做沒有意義;你試圖在'BackgroundWorker'上執行代碼,但你也想阻止調用方法返回,直到完成'BackgroundWorker'。 – 2011-03-07 19:38:35