Wpf 棱镜:异常处理?

Wpf 棱镜:异常处理?,wpf,mvvm,prism,Wpf,Mvvm,Prism,在我正在编写的Prism应用程序中,我在复合事件处理程序中得到了一个奇怪的结果。我创建了事件处理程序,并放入一条异常语句,以验证是否正在调用该处理程序: public void OnDateSelected(DateTime selectedDate) { // Temporary code throw new ApplicationException("Not implemented yet."); } 我运行应用程序并引发事件。调用事件处理程序,但异常不会停止执行。它被写入

在我正在编写的Prism应用程序中,我在复合事件处理程序中得到了一个奇怪的结果。我创建了事件处理程序,并放入一条异常语句,以验证是否正在调用该处理程序:

public void OnDateSelected(DateTime selectedDate)
{
    // Temporary code
    throw new ApplicationException("Not implemented yet.");
}

我运行应用程序并引发事件。调用事件处理程序,但异常不会停止执行。它被写入输出窗口,应用程序退出处理程序,但继续执行。在任何地方都看不到try-catch块,那么为什么异常没有中断执行呢?谢谢。

我们在这里解决了这个问题。我们正在使用prism库的v2.2。在BackgroundEventSubscription类中,当发布事件时,将创建并调用后台工作程序。永远不会处理RunWorkerCompleted委托,因此不会在任何地方拾取异常。prism库也没有为最终用户提供在此版本中应用自己的委托的简单方法。解决方案是编译您自己的一组库并使用threadpool(这是我们所做的),或者覆盖您自己的CompositePresentationEvent类的Subscribe,并使用您自己的事件订阅类来完成您需要的任务

prism v4库在使用线程池时解决了这个问题,因此,如果您指定了域未处理异常处理程序,则任何未处理的异常都将冒泡到域未处理异常处理程序


谢谢。

我们在这里解决了这个问题。我们正在使用prism库的v2.2。在BackgroundEventSubscription类中,当发布事件时,将创建并调用后台工作程序。永远不会处理RunWorkerCompleted委托,因此不会在任何地方拾取异常。prism库也没有为最终用户提供在此版本中应用自己的委托的简单方法。解决方案是编译您自己的一组库并使用threadpool(这是我们所做的),或者覆盖您自己的CompositePresentationEvent类的Subscribe,并使用您自己的事件订阅类来完成您需要的任务

prism v4库在使用线程池时解决了这个问题,因此,如果您指定了域未处理异常处理程序,则任何未处理的异常都将冒泡到域未处理异常处理程序

谢谢