在您的类中有两个 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
        }
    }
}

在您的类中有两个 System.Timer.Timer 对象并捕获异常

不同的计时器,但异常由引发异常后ticks的第一个计时器捕获。你的问题主要是因为你使用了一个 线。

System.Timers.Timer将静默吞下异常并继续计时器(尽管这可能会在框架的未来版本中发生变化); System.Threading.Timer将终止该计划。