c# - try catch UI 线程的调用

标签 c# wpf exception thread-safety backgroundworker

我制作了一个全天候运行的应用程序,包含三个 Backgroundworkers以不同的间隔运行。

在他们的DoWork中我做了一些Dispatcher.BeginInvoke所以它更新了一些图表。问题是它在夜间崩溃,我不确定为什么。我已经包裹了Dispatcher.BeginInvoke在 try/catch 中,但由于我正在调用 UI 线程,我想我可能会在 Dispatcher.BeginInvokeINSIDE 中执行 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/

相关文章:

c# - 为什么此代码不保留剪贴板?

wpf - WPF 中的 DateTimePicker 控件

c# - WPF:如何在动态创建的 WPF 窗口中动态添加控件

java - Swagger如何正确生成自定义异常类?

c++ - 从保护类析构函数中抛出异常导致 std::terminate

c# - BuildSiteMap() 方法如何工作?

c# - 使用 C# 将空间转换为 "+"

c# - 为什么 ASP.NET 编译器会在每次构建时重建所有二进制文件?

wpf - WPF 多线程如何工作?

java - 抛出异常时编译错误?