我的应用程序中有一个计时器,每10毫秒触发一次。我知道这对于Windows计时器来说是一个非常小的值,并且知道精度问题。无论如何,它会导致CPU使用率平均增加到10%,并且内存使用量正在缓慢增加,但最终会回落到较低的值。没有计时器,没有CPU或内存问题。从我所读过的内容来看,内存增加然后减少是正常的事情,这是由于Windows不释放内存,除非必须这样做。但是,这是否会导致我的应用程序出现任何性能问题? 10%的CPU使用率是否会导致问题?当我将计时器增加到100毫秒时,似乎有点好,但仍然看到类似的效果。我需要定时器间隔尽可能小。
答案 0 :(得分:0)
10%的CPU使用率(在我看来)并不是什么大问题。我的意思是没关系,但绝对不是最好的。如果您需要做很多额外的工作来获得更好的性能,那就没关系了。
我写了很多使用20%CPU的应用程序并且工作得很好。但是,设置为10ms的计时器有点奇怪。我想你想用它来不断检查一些东西。如果你这样做,不要在10ms使用计时器。使用event
来执行此操作会更好。如果你不了解事件,这里有一个简单的指南。
你声明一个这样的事件:
public event EventHandler SomethingHappened;
出于本示例的目的,我将把事件放在一个名为MyClass
的类中。如果您想举起活动,即发生活动,请执行以下操作:
SomethingHappened (this, EventArgs.Empty);
现在让我们看看你如何订阅这个活动。当然你需要创建一个对象:
MyClass obj = new MyClass ();
然后编写一个在事件发生时执行的方法。返回值类型和参数必须与此相同:
public void DoSomething (object sender, EventArgs e) {
}
现在进行订阅:
obj.SomethingHappened += DoSomething;
有关详细信息,请参阅MSDN教程:
https://msdn.microsoft.com/en-us/library/aa645739(v=vs.71).aspx
答案 1 :(得分:0)
解决。问题是我在计时器事件中有一些代码会减慢一切。更换几行代码后,CPU使用率回落到0%,内存不再增加。希望这可能在将来帮助其他人。