如何取消背景工作並返回錯誤消息。我知道您可以使用DoWorkEventArgs e.Results
將結果傳遞迴主線程,但當取消子線程時,e.Results
會被覆蓋。例如:將結果從已取消的BackgroundWorker線程傳遞迴主線程
private MyProgram_DoWork(object sender, DoWorkEventArgs e)
{
e.Cancel = true;
e.Result = "my error message";
return;
}
private void MyProgram_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
if ((e.Cancelled == true))
{
string ErrorMsg = (string)e.Result; //exception happens here
....
}
else
{
// success code
}
}
是否有另一種方式來阻止我的子線程,併發送一個字符串返回到主線程?
你爲什麼取消它?根據[文檔](http://msdn.microsoft.com/en-us/library/system.componentmodel.runworkercompletedeventargs.result(v = vs.110).aspx),Result'屬性將引發一個InvalidOperationException '如果你取消工作。那麼,爲什麼你這樣做**和**期待*結果*?基本上你的問題是閱讀「文檔說,當我做X時,Y會發生,我正在做X.爲什麼Y發生?我怎樣才能避免Y發生?」。我會(天真地)假設答案是「不要做X」。所以不要取消工作。 –