Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.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# 当CPU利用率和内存增加时,计时器间隔增加_C#_Multithreading_Timer_Cpu - Fatal编程技术网

C# 当CPU利用率和内存增加时,计时器间隔增加

C# 当CPU利用率和内存增加时,计时器间隔增加,c#,multithreading,timer,cpu,C#,Multithreading,Timer,Cpu,我的代码中有一个计时器,时间为“x”秒。代码有多个线程,并且有多个计时器。现在我注意到,我的应用程序在运行一段时间后会进入挂起状态,从日志中我注意到计时器间隔有所变化。它增加了。这是怎么可能的?有人能提供解决方案吗?在c语言中有没有其他的定时器# 计时器不精确。间隔是触发事件之前的最小延迟,但不能保证计时器事件在间隔结束时会准确执行 当间隔结束时,计时器将偶数处理程序排入线程池。因此,当线程池中有一个可用线程来执行事件处理程序,然后有一个可用的CPU内核来实际执行它时,事件处理程序就会被执行 换

我的代码中有一个计时器,时间为“x”秒。代码有多个线程,并且有多个计时器。现在我注意到,我的应用程序在运行一段时间后会进入挂起状态,从日志中我注意到计时器间隔有所变化。它增加了。这是怎么可能的?有人能提供解决方案吗?在c语言中有没有其他的定时器#


计时器不精确。间隔是触发事件之前的最小延迟,但不能保证计时器事件在间隔结束时会准确执行

当间隔结束时,计时器将偶数处理程序排入线程池。因此,当线程池中有一个可用线程来执行事件处理程序,然后有一个可用的CPU内核来实际执行它时,事件处理程序就会被执行

换句话说,计算机越忙,延迟发生的可能性就越大

如果需要更接近实时的执行,则必须使用专用线程并将其优先级设置为高:

Thread myThread = new Thread(MyThreadMethod);
myThread.Priority = ThreadPriority.Highest;
myThread.Start();
然而,现在,在MyThreadMethod中,您需要实现一个复杂的机制来监控经过了多少时间,并决定是否必须执行实际代码


您不应该只是循环检查时间,因为这将以100%的速度占用单个内核。也许您可以使用可怕的
线程。以较小的间隔睡眠
,并检查时间是否已过。你必须使用一个比你所需要的更小的间隔,其大小至少为10<代码>线程。睡眠
也不精确。

请添加一些源代码以进行调查。如果没有任何源代码或重新创建问题的示例,我们将无法帮助您。想象一下,您每5秒要做一项重要的工作,这将花费1秒的时间。易于管理。现在你必须处理6个重要的工作->易于及时处理?C#中至少有5个计时器类。你用哪一个?你的问题在细节上还是太短了。缩小并告诉我们计时器的用途。
Thread myThread = new Thread(MyThreadMethod);
myThread.Priority = ThreadPriority.Highest;
myThread.Start();