我正在创建用于 Windows Workflow 4.0的 STA 版本的SynchronizationContext 。我想知道在发布回调时如何处理异常。
SynchronizationContext可用于发送(同步执行)或发布(异步执行)类型为SendOrPostCallback的委托。尽管在这两种情况下我都在 STA 线程上调用委托,但很容易知道如何在同步执行时处理异常。我阻塞调用线程,在我的工作线程上调用回调,记录任何异常,解除阻塞调用线程,并在调用线程上抛出任何记录的异常。
我应该在异步Post上做什么不太清楚。没有将异常从执行线程传回调用线程的机制;发布是 100% 火,然后忘记。SendOrPostCallback中 没有EndInvoke()或WaitHandle。抛出的任何异常都将导致应用程序被拆除。
我是否别无选择,只能让Post中引发的异常破坏我的应用程序?这似乎是框架中SynchronizationContexts中的默认行为(谢谢,Reflector)。我似乎无法弄清楚这是为什么。难道不应该有一些方法来防止异步Post繁荣吗?