2

我已正确设置 DispatchTimer 以每秒触发一次-

OneSecondChecker = new DispatcherTimer();
OneSecondChecker.Tick += new EventHandler(OneSecondChecker_Tick);
OneSecondChecker.Interval = new TimeSpan(0, 0, 1);                 
OneSecondChecker.Start();

问题:它会在一段时间内正确触发,然后停止触发。

附加信息: 现在您可能会问它有什么作用?如果 OneSecondChecker_Tick() 方法正在运行,则有一个类级别(静态)布尔变量设置为 true,如果不是,则设置为 false,因此我们没有此方法的两个实例在运行即使它设置为每秒触发一次。确保 OneSecondChecker_Tick() 运行无任何延迟是应用程序要求。我也不想在无限循环中运行。在 OneSecondChecker_Tick() 运行之前,会进行第二次检查以查看表值是否已更新。正是该表值“某种”通知 OneSecondChecker_Tick() 运行。该表值由另一个应用程序更新。

在方法本身中,我确实调用了使用 TPL 并行运行线程。我不知道这是否与它有关。

编辑 我仍然无法弄清楚这一点。可能是应用程序被冻结。任务管理器并没有这么说。是否可以判断应用程序是否没有从任务管理器以外的其他地方响应?

4

1 回答 1

0

问题不在于 DispatchTimer。甚至 TPL 都没有。问题在于代码在无限循环中运行并导致堆栈溢出 - 之后它停止触发。

于 2013-03-06T02:10:52.640 回答