我制作了一个全天候运行的应用程序,包含三个 Backgroundworkers
以不同的间隔运行。
在他们的DoWork
中我做了一些Dispatcher.BeginInvoke
所以它更新了一些图表。问题是它在夜间崩溃,我不确定为什么。我已经包裹了Dispatcher.BeginInvoke
在 try/catch 中,但由于我正在调用 UI 线程,我想我可能会在 Dispatcher.BeginInvoke
的 INSIDE 中执行 try catch相反。
这有关系吗?
最佳答案
测试 RunWorkerCompleted 方法中的 EventArgs Error 属性是否不为 null
backgroundWorker.RunWorkerCompleted += (s, e) =>
{
if (e.Error != null)
{
// handle error
}
}
try/catch
只能处理当前线程中发生的事情。如果另一个线程中发生错误,工作线程将完成,但除非检查 Error
属性,否则您不知道原因。
关于c# - try catch UI 线程的调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21256954/