Ich erstelle eine STA-Version des Synchronisationskontext für die Verwendung in Windows Workflow 4.0. Ich frage mich, was über Ausnahmen zu tun, wenn Post-ing Rückrufe.
Le site Synchronisationskontext kann verwendet werden, um Senden Sie (synchrone Ausführung) oder Beitrag (asynchrone Ausführung) Delegierte des Typs SendOrPostCallback . Obwohl ich in beiden Fällen den Delegaten auf einem STA-Thread aufrufe, ist es einfach zu wissen, wie man Ausnahmen bei der synchronen Ausführung behandelt. Ich blockiere den aufrufenden Thread, rufe den Callback auf meinem Worker-Thread auf, zeichne alle Ausnahmen auf, hebe die Blockierung des aufrufenden Threads auf und werfe alle aufgezeichneten Ausnahmen auf den aufrufenden Thread.
Was sollte ich bei der asynchronen Beitrag ist weniger klar. Es gibt keinen Mechanismus, um diese Ausnahme vom ausführenden Thread zurück an den aufrufenden Thread zu übermitteln; Beitrag ist 100% Feuer und Vergessen. Es gibt keine EndInvoke() o WaitHandle im SendOrPostCallback . Jede ausgelöste Ausnahme führt dazu, dass die Anwendung abgebrochen wird.
Habe ich keine andere Wahl, als eine Ausnahme, die in einer Beitrag meine Bewerbung verwerfen? Das scheint das Standardverhalten in der Synchronisationskontexte im Rahmen (danke, Reflector). Ich kann mir nicht erklären, warum das so ist. Sollte es nicht sein algunos Weg zur Verhinderung asynchroner Beitrag s vor der Explosion?