Kor*_*tak 32 c# multithreading exception timer backgroundworker
我无法在任何地方找到这个问题的答案......
System.Threading.Timer的回调方法(或在System.Timers.Timer的事件处理程序中)抛出的异常会发生什么.异常是否传播到创建计时器的线程或异常丢失?
在计时器的回调函数中抛出异常有什么副作用?
什么是向计时器的创建线程发信号通知工作线程(回调方法)中的异常被抛出的正确方法?
谢谢你的时间.
SLa*_*aks 35
异常不会传递回调用线程.如果你想要它,你可以添加一个catch块并找出一种方法来通知调用线程.如果调用线程是WinForms或WPF UI线程,则可以使用SynchronizationContext该类将调用传递给UI线程.否则,您可以使用线程安全队列(或同步锁)并在另一个线程中定期检查它.
System.Timers.Timer将默默地吞下异常并继续计时器(尽管这可能会在未来版本的框架中发生变化); System.Threading.Timer将终止该计划.