Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 为什么调度员在一段随机时间后停止开火?_C#_Wpf_Parallel.foreach_Dispatchertimer - Fatal编程技术网

C# 为什么调度员在一段随机时间后停止开火?

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(); 问题:它会在一段时间内正确发射,然

我已正确设置DispatchTimer,以便每秒发射一次-

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。我也遇到过这种情况。你找到解决办法了吗?