我经常在 winforms 应用程序中使用这段代码来等待事件,而不使用线程。
while(checkSomething()){
Application.DoEvents();
}
程序和 pc 在循环运行时仍然响应,但是如果我在任务管理器中查看 cpu 使用情况,它的使用情况报告为 100%。 你知道为什么会这样吗?
最佳答案
Application.DoEvents() 检查是否有一些事件需要处理然后处理它们,它返回。如果您的 checkSomething()
没有阻塞任何东西,您就实现了一个繁忙的循环。
也就是说,您的处理器正忙于尽可能快地运行 Application.DoEvents()
和 checkSomething()
。
如果您的 checkSomething 没有检查与其他线程相关的数据,那么您实际上在检查什么? - 听起来你应该处理一个事件而不是轮询。
关于c# - 为什么 Application.DoEvents 使 cpu 使用率上升到 100%,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3755447/