我有 2 个线程。具有 UserControl 的 Thread-1 和具有委托方法的 Thread-2。在线程 2 中,
i) 我需要在 Thread-1 上调用委托。
ii) 根据是否发生任何异常,执行一些额外的逻辑
这就是我正在做的事情。在 Thread-1 中,在控件创建之前,我已经注册了一个回调
Application.ThreadException += MyUIExceptionHandler();
Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException);
问题 1:
现在,在 Thread-2 中,当我调用时, 我确实会在发生异常时thread1Control.BeginInvoke(myDelegateMethod, args)
得到回调,但由于是异步的,我不知道在执行上述步骤 ii) 之前要等待多长时间。一个简单的调用后为我完成了这项工作,它应该以我知道的方式完成。但是我实现这一目标的其他选择是什么?
PS:我无法从 UserControl 端做任何通知,因为我无法控制该代码!MyUIExceptionHandler()
Control.BeginInvoke
Thread.Sleep(5000)
BeginInvoke()
问题 2:
如果我使用thread1Control.Invoke(myDelegateMethod, args)
which is a synchronous call 似乎完全符合要求,但是当出现异常时,我不会回调到MyUIExceptionHandler()
. 为什么在这种情况下我没有收到回调?