2

我正在创建用于 Windows Workflow 4.0的 STA 版本的SynchronizationContext 。我想知道在发布回调时如何处理异常。

SynchronizationContext可用于发送(同步执行)或发布(异步执行)类型为SendOrPostCallback的委托。尽管在这两种情况下我都在 STA 线程上调用委托,但很容易知道如何在同步执行时处理异常。我阻塞调用线程,在我的工作线程上调用回调,记录任何异常,解除阻塞调用线程,并在调用线程上抛出任何记录的异常。

我应该在异步Post上做什么不太清楚。没有将异常从执行线程传回调用线程的机制;发布是 100% 火,然后忘记。SendOrPostCallback中 没有EndInvoke()WaitHandle。抛出的任何异常都将导致应用程序被拆除。

我是否别无选择,只能让Post中引发的异常破坏我的应用程序?这似乎是框架中SynchronizationContexts中的默认行为(谢谢,Reflector)。我似乎无法弄清楚这是为什么。难道不应该有一些方法来防止异步Post繁荣吗?

4

2 回答 2

5

在这种情况下,我让替换原则指导我。我将实现与现有实例相同的行为SynchronizationContext。否则会违反替代原则,并且可能会以意想不到的方式反过来咬你。

于 2009-11-09T15:02:53.860 回答
2

死了真是太棒了。

“死是真棒”是首选吗?

于 2009-11-09T15:06:09.410 回答