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_Dispatchertimer - Fatal编程技术网

C# 调度程序和高CPU负载

C# 调度程序和高CPU负载,c#,multithreading,dispatchertimer,C#,Multithreading,Dispatchertimer,嘿,我有一个WPF应用程序,使用Dispatchermer每分钟触发一个事件。 我运行我的应用程序,cpu负载跳到100%。我试图在不使用计时器的情况下编译一个应用程序,cpu负载非常低,正如我所期望的那样 示例代码: DispatcherTimer MainTimer = new DispatcherTimer(); MainTimer.Tick += new EventHandler(Core.Timers.MainTimer_Tick); MainTimer.Interval = Time

嘿,我有一个WPF应用程序,使用Dispatchermer每分钟触发一个事件。 我运行我的应用程序,cpu负载跳到100%。我试图在不使用计时器的情况下编译一个应用程序,cpu负载非常低,正如我所期望的那样

示例代码:

DispatcherTimer MainTimer = new DispatcherTimer();
MainTimer.Tick += new EventHandler(Core.Timers.MainTimer_Tick);
MainTimer.Interval = TimeSpan.FromSeconds(60);
MainTimer.Start();

public static void MainTimer_Tick(object sender, EventArgs e)
{
 // initialize new class, do something...
}
没有该代码,cpu负载很低。 这是什么原因造成的

更新
我可以用其他计时器吗?准确性并不重要。

我使用System.Timers.Timer解决了这个问题。它运行正常。

如果MainTimer\u Tick中没有代码,CPU负载是否很低?如果处理程序为空,则执行速度真的很慢?我不知道这是不是很慢。即使滴答声中没有代码,CPU负载也很高。CPU是跳到100%,然后立即降低到0%,还是一直保持在100%呢?这一点很重要,因为短暂的100%CPU峰值是非常正常的:CPU要么在工作,要么不工作,它不能是50%活动的(除非你把做100%工作的2个内核中的1个计算在内)。当您在task manager中看到50%时,这意味着某些应用程序正在做一些在很短的时间内使用CPU的事情,例如读取文件,此时CPU主要处于阻塞(休眠)状态,等待设备赶上。@repka:CPU使用率是以秒(或其他间隔)的部分来衡量的CPU用于执行线程,而不是简单地等待事件发生。因此,100%的CPU使用率峰值不是“正常的”;这通常意味着您的CPU在整整一秒钟内处于活动状态。