创建SynchronizationContext时的异常做法?

2 .net c# workflow-foundation synchronizationcontext workflow-foundation-4

我正在创建一个STA版本的SynchronizationContext,以便在Windows Workflow 4.0中使用.我想知道在发布回调时如何处理异常.

所述的SynchronizationContext可用于发送(执行同步地)或邮政(异步执行)类型的代表SendOrPostCallback.虽然在这两种情况下我都在STA线程上调用委托,但是在同步执行时很容易知道如何处理异常.我阻塞调用线程,在我的工作线程上调用回调,记录任何异常,解锁调用线程,并在调用线程上抛出任何记录的异常.

我应该在异步Post上做什么不太清楚.没有机制将该异常从执行线程转移回调用线程; 邮差 100%火,忘了.没有EndInvoke会()WaitHandle的SendOrPostCallback.抛出的任何异常都将导致应用程序被拆除.

我别无选择,只能在帖子中抛出异常,推倒我的申请表吗?这似乎是框架中SynchronizationContexts的默认行为(谢谢,Reflector).我似乎无法弄清楚为什么会这样.难道不应该有一些方法来阻止异步Post s的繁荣吗?

Jar*_*Par 5

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