c# - 如何在多线程中从TargetInitationException中优雅地恢复?

标签 c# multithreading exception

我在另一个线程中执行由 UI 线程(进度条)上的 Windows 控件引起的长进程时遇到了 TargetInitationException。这个异常导致我的应用程序崩溃(在调试中转到主方法)并且无法通过 try catch 捕获。 我找出了导致此异常的原因,并修复了它(试图通过超过最大值的值分配“Value”属性)。但这让我想知道如何捕获这样的异常(在生产代码中),以便我可以选择恢复我的应用程序而不是终止应用程序。

最佳答案

您很可能无法恢复太多。就您的操作而言,由于该错误,大量堆栈帧(以及从这些堆栈帧引用的对象)的状态可能无效。

正因为如此,您最多只能恢复到非常高的水平并再次尝试该操作。

如果您正在访问的资源能够包含在事务中,那么我建议您这样做,这样您就不必担心持久数据的不一致。

此外,您可能想查看以下帖子:

Best Practice for Exception Handling in a Windows Forms Application?

以及 Microsoft 的异常处理应用程序 block :

http://msdn.microsoft.com/en-us/library/cc309505.aspx

关于c# - 如何在多线程中从TargetInitationException中优雅地恢复?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/627753/

相关文章:

c++ - boost::thread join 函数 block 调用线程

c++ - 在同一循环中集成 pthread_create() 和 pthread_join()

java - 什么时候适合抛出异常?

java - 在数据库中创建表导致很多异常

c# - 如何动态更改 td 内容?

multithreading - Go 调度器什么时候会创建新的 M 和 P?

c# - 微软同步框架

android - 尝试调用 Resources 中的虚拟方法 res = getResources();

c# - WPF 将 DataGrid 组合框所选项目绑定(bind)到所选 DataGridRow 的数据上下文

c# - 有没有办法在 Xamarin Forms 'Entry' XAML 上禁用自动大写