Windows Workflow 4.0 で使用するSynchronizationContextの STA バージョンを作成しています。コールバックを Post-ing するときの例外についてどうするか疑問に思っています。
SynchronizationContextは、タイプSendOrPostCallbackのデリゲートを送信(同期的に実行) またはポスト(非同期的に実行) するために使用できます。どちらの場合も STA スレッドでデリゲートを呼び出しますが、同期的に実行するときに例外を処理する方法は簡単にわかります。呼び出しスレッドをブロックし、ワーカー スレッドでコールバックを呼び出し、例外を記録し、呼び出しスレッドのブロックを解除し、記録された例外を呼び出しスレッドでスローします。
非同期Postで何をすべきかはあまり明確ではありません。その例外を実行中のスレッドから呼び出し元のスレッドに転送するメカニズムはありません。投稿は 100% 着火して忘れます。SendOrPostCallback にはEndInvoke ()またはWaitHandleはあり ません。例外がスローされると、アプリケーションが破棄されます。
Postでスローされた例外によってアプリケーションが破棄される以外に選択肢はありませんか? これは、フレームワークのSynchronizationContextsのデフォルトの動作のようです (Reflector さん、ありがとうございます)。これがなぜなのか理解できないようです。非同期のPostがブームになるのを防ぐ方法はあるのではないでしょうか?