我正在编写的Prism应用程序中的复合事件处理程序中得到一个奇怪的结果.我创建了事件处理程序并输入了一个异常语句来验证是否正在调用该处理程序:
public void OnDateSelected(DateTime selectedDate)
{
// Temporary code
throw new ApplicationException("Not implemented yet.");
}
Run Code Online (Sandbox Code Playgroud)
我运行应用程序并举起活动.调用事件处理程序,但异常不会停止执行.它被写入输出窗口,应用程序退出处理程序,但继续执行.在任何地方都没有try-catch块,那么为什么不会中断执行?谢谢.
我们在这里找到了问题.我们正在使用棱镜库的v2.2.在BackgroundEventSubscription类中,当发布事件时,将创建并调用后台工作程序.永远不会处理RunWorkerCompleted委托,因此永远不会在任何地方获取异常.prism库也没有为最终用户提供在此版本中应用自己的委托的简单方法.解决方案是编译自己的一组库并使用线程池(这是我们所做的)或覆盖您自己的CompositePresentationEvent类的订阅,并使用您自己的事件订阅类来完成您所需的操作.
prism v4库已经解决了这个问题,因为它正在使用线程池,因此任何未处理的异常都会冒泡到域未处理的异常处理程序(如果您指定了一个).
谢谢.
| 归档时间: |
|
| 查看次数: |
1652 次 |
| 最近记录: |