c# - 为什么 Application.DoEvents 使 cpu 使用率上升到 100%

标签 c# winforms

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

相关文章:

c# - Interop 进程后无法关闭 Excel.exe

WPF 与 Windows 窗体

c# - WIndows Combobox AutoComplete - 你能设置打字时间的持续时间吗?

vb.net - 组合框事件 : SelectedIndexChanged vs. SelectedValueChanged

c# - 无法从 web api POST 读取正文数据

c# - NHibernate LINQ 计算查询中的组数

c# - 使用指向 C# 的指针迁移函数 C++

c# - 子窗体找不到文本文件

c# - 如何让 Linq to SQL 识别动态存储过程的结果集?

c# - Windows 上的远程桌面 + 隧道