[英]WPF - error handling with asynchronous command using BackgroundWorker
[英]error handling with BackgroundWorker
我知道,您可以在RunWorkerCompleted處理程序中處理BackgroundWorker錯誤,就像在下一個代碼中一樣
var worker = new BackgroundWorker();
worker.DoWork += (sender, e) =>
{
throw new InvalidOperationException("oh shiznit!");
};
worker.RunWorkerCompleted += (sender, e) =>
{
if(e.Error != null)
{
MessageBox.Show("There was an error! " + e.Error.ToString());
}
};
worker.RunWorkerAsync();
但我的問題是我仍然收到一條消息:錯誤已在用戶代碼中排除在線
throw new InvalidOperationException("oh shiznit!");
我該如何解決這個問題?
您收到它是因為您附加了調試器。 嘗試在沒有調試器的情況下啟動應用程序:不會觸發異常,並且當worker完成操作時會顯示MessageBox。
我無法重現錯誤。 以下工作正常:
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
var worker = new BackgroundWorker();
worker.DoWork += (s, evt) =>
{
throw new InvalidOperationException("oops");
};
worker.RunWorkerCompleted += (s, evt) =>
{
if (evt.Error != null)
{
MessageBox.Show(evt.Error.Message);
}
};
worker.RunWorkerAsync();
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.