我经常在winforms应用程序中使用此代码来等待事件,而不使用线程。
while(checkSomething()){
Application.DoEvents();
}
循环运行时,程序和PC仍会响应,但是,如果我在任务管理中查看cpu的使用情况,则报告为100%。
你知道为什么会这样吗?
最佳答案
当您添加此:
while(checkSomething()){
Application.DoEvents();
}
基本上,您说的是让程序尽可能快地处理Windows消息,而无需停止它,直到“ checkSomething”返回true。
有很多reasons to avoid
DoEvents
-就是说,如果您确实打算这样做,则应尝试在循环中放弃一些处理时间:while(checkSomething()){
Application.DoEvents();
Thread.Sleep(10); // Sleep a tiny amount...
}
关于c# - 为什么Application.DoEvents使CPU使用率提高到100%,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3755447/