C# - CPU 和使用较小计时器间隔时的内存问题

C# - CPU and memory issues when using smaller timer interval

我的应用程序中有一个计时器,每 10 毫秒触发一次。我知道这对于 Windows 计时器来说是一个非常小的值并且知道精度问题。无论如何,它会导致 CPU 使用率平均增加到 10%,并且内存使用率会缓慢增加,但最终会回落到较低的值。没有计时器,就没有 CPU 或内存问题。根据我的阅读,内存增加然后减少是正常的事情,这是由于 Windows 除非必须,否则不会释放内存。但是,这会导致我的应用程序出现任何性能问题吗? 10% CPU 的使用率也会导致问题吗?当我将计时器增加到 100 毫秒时,它似乎好一点,但仍然看到类似的效果。我需要定时器间隔越小越好。

10% CPU 使用率(在我看来)没什么大不了的。我的意思是还可以,但绝对不是最好的。如果您需要做很多额外的事情来获得更好的性能,那也没关系。

我写了很多使用 20% CPU 的应用程序,而且效果还不错。但是,将计时器设置为 10 毫秒有点奇怪。我猜你想用它来不断检查某些东西。如果您这样做,请不要在 10 毫秒内使用定时器。最好使用 events 来执行此操作。如果你不知道事件,这里有一个简单的指南。

你这样声明一个事件:

public event EventHandler SomethingHappened;

出于本示例的目的,我将把事件放在名为 MyClass 的 class 中。当您想引发事件,即让事件发生时,请执行以下操作:

SomethingHappened (this, EventArgs.Empty);

现在让我们看看您如何订阅该活动。当然你需要创建一个对象:

MyClass obj = new MyClass ();

然后写一个事件发生时执行的方法。 return 值类型和参数必须与此相同:

public void DoSomething (object sender, EventArgs e) {

}

现在订阅:

obj.SomethingHappened += DoSomething;

有关详细信息,请参阅此处的 MSDN 教程:

https://msdn.microsoft.com/en-us/library/aa645739(v=vs.71).aspx

已解决。问题是我在计时器事件中有一些代码正在减慢一切。替换几行代码后,CPU 使用率回落到 0%,内存不再增加。希望这对将来的其他人有帮助。