私は2つのスレッドを持っています。UserControl を持つ Thread-1 と、デリゲート メソッドを持つ Thread-2 です。スレッド 2 では、
i) Thread-1 でデリゲートを呼び出す必要があります。
ii)例外が発生したかどうかに応じて、いくつかの追加ロジックを実行します
これが私がやっていることです。Thread-1 では、コントロールを作成する前に、コールバックを登録しました
Application.ThreadException += MyUIExceptionHandler();
Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException);
質問 1:
スレッド 2 では、呼び出し時に 例外の発生時にthread1Control.BeginInvoke(myDelegateMethod, args)
コールバックを取得しますが、非同期であるため、上記の手順 ii) を実行する前に待機する時間がわかりません。への呼び出しの後の単純なものが私のために仕事をします。それは私が知っている方法で行われるべきです。しかし、これを達成するための他の選択肢は何ですか?
PS:私はそのコードを制御できないため、UserControl 側から通知を行うことはできません!MyUIExceptionHandler()
Control.BeginInvoke
Thread.Sleep(5000)
BeginInvoke()
質問-2:同期呼び出し
を使用する場合thread1Control.Invoke(myDelegateMethod, args)
、請求書に完全に適合しているように見えますが、例外が発生した場合、 へのコールバックが取得されませんMyUIExceptionHandler()
。この場合、コールバックを受け取らないのはなぜですか?