man*_*ans 5 c# wpf exception-handling event-handling backgroundworker
我有一个WPF应用程序BackgroundWorker.我在这个BGW中抛出一个异常,但它没有显示在任何地方!,只是后台工作人员发射它的WorkerFinished事件.
它在哪里?
每个线程都有自己的调用堆栈; 异常只能向上移动自己的调用堆栈,它们无法"渗透"到另一个线程的调用堆栈中.
当您的异常冒泡到启动DoWork事件处理程序的BackgroundWorker代码时,异常将最终被明确捕获并存储在Error属性中,而不是允许它到达调用堆栈的顶部并使应用程序崩溃.
如果你希望程序在BGW抛出异常时结束,那么你需要处理完成的事件,检查异常,然后重新抛出它或抛出一个新的异常.