我经常在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/

10-11 16:08