我已经正确设置了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并行运行线程。我不知道它是否与它有任何关系。
修改 我仍然无法弄明白这一点。可能是应用程序被冻结了。但任务经理并没有这么说。是否可以判断应用程序是否没有从任务管理器以外的其他位置响应?
答案 0 :(得分:1)
问题不在于DispatchTimer。甚至没有TPL。问题还在于无限循环中运行的代码并导致堆栈溢出 - 之后它停止了触发。