C# 为什么调度员在一段随机时间后停止开火?
我已正确设置DispatchTimer,以便每秒发射一次-C# 为什么调度员在一段随机时间后停止开火?,c#,wpf,parallel.foreach,dispatchertimer,C#,Wpf,Parallel.foreach,Dispatchertimer,我已正确设置DispatchTimer,以便每秒发射一次- OneSecondChecker = new DispatcherTimer(); OneSecondChecker.Tick += new EventHandler(OneSecondChecker_Tick); OneSecondChecker.Interval = new TimeSpan(0, 0, 1); OneSecondChecker.Start(); 问题:它会在一段时间内正确发射,然
OneSecondChecker = new DispatcherTimer();
OneSecondChecker.Tick += new EventHandler(OneSecondChecker_Tick);
OneSecondChecker.Interval = new TimeSpan(0, 0, 1);
OneSecondChecker.Start();
问题:它会在一段时间内正确发射,然后停止发射
其他信息:
现在你可能会问它做什么?如果方法OneSecondChecker_Tick()正在运行,则有一个类级(静态)布尔变量设置为true,如果方法OneSecondChecker_Tick()未运行,则该变量设置为false,这样即使该方法设置为每秒触发,也不会有两个实例同时运行。应用程序要求确保OneSecondChecker_Tick()毫不延迟地运行。我也不想在无限循环中运行。在运行OneSecondChecker_Tick()之前,还要进行第二次检查,查看表值是否更新为。正是该表值“sort of”通知OneSecondChecker_Tick()运行。该表值由另一个应用程序更新
在方法本身中,我确实调用了使用TPL并行运行线程。我不知道这是否与此有关
编辑
我还没弄明白这个。可能是应用程序已冻结。不过,任务管理器没有这样说。是否可以判断应用程序是否没有从任务管理器以外的其他位置响应?问题不在于DispatchTimer。甚至连第三方物流都没有。问题还存在于无限循环中运行的代码中,该代码导致堆栈溢出,然后它停止触发。检查OneSecondChecker中是否发生异常。是否可能计时器被垃圾收集?没有代码将其设置为null。我也遇到过这种情况。你找到解决办法了吗?