为什么我的异常在wpf应用程序中没有任何区别?

man*_*ans 5 c# wpf exception-handling event-handling backgroundworker

我有一个WPF应用程序BackgroundWorker.我在这个BGW中抛出一个异常,但它没有显示在任何地方!,只是后台工作人员发射它的WorkerFinished事件.

它在哪里?

Ser*_*rvy 7

每个线程都有自己的调用堆栈; 异常只能向上移动自己的调用堆栈,它们无法"渗透"到另一个线程的调用堆栈中.

当您的异常冒泡到启动DoWork事件处理程序的BackgroundWorker代码时,异常将最终被明确捕获并存储在Error属性中,而不是允许它到达调用堆栈的顶部并使应用程序崩溃.

如果你希望程序在BGW抛出异常时结束,那么你需要处理完成的事件,检查异常,然后重新抛出它或抛出一个新的异常.