在您的类中有两个 System.Timer.Timer 对象并捕获异常
本文关键字:Timer System 两个 对象 捕获异常 | 更新日期: 2023-09-27 18:32:21
我有一个包含两个System.Timers.Timer
对象的类。我现在看到的是,一个抛出的异常被另一个捕获。这是正确的行为吗?
class MyClass {
System.Timers.Timer tOne;
System.Timers.Timer tTwo;
tOne.Elapsed += new System.Timers.ElapsedEventHandler(one);
tTwo.Elapsed += new System.Timers.ElapsedEventHandler(two);
void one(object sender, System.Timers.ElapsedEventArgs e) {
try {
.. some code that throws ...
} catch (Exception) {
// not caught here
}
}
void two(object sender, System.Timers.ElapsedEventArgs e) {
try {
} catch (Exception) {
// but caught here
}
}
}
不同的计时器,但异常由引发异常后ticks
的第一个计时器捕获。你的问题主要是因为你使用了一个 线。
System.Timers.Timer
将静默吞下异常并继续计时器(尽管这可能会在框架的未来版本中发生变化); System.Threading.Timer
将终止该计划。