【发布时间】:2010-11-18 21:22:02
【问题描述】:
我最近构建了一个使用单线程定期处理信息的服务。该服务是使用 Microsoft Visual Studio 2010 Express 构建的。我注意到 CPU 使用率飙升(CPU 使用率达到 100%)。
后来,出于好奇,我构建了一个非常小的程序,它所做的只是启动一个小线程或计时器,然后运行一些非常长的循环。我还从构建控制台应用程序切换到了 Windows 窗体应用程序。通过切换要构建的程序类型,我能够减少麻烦。
我试过降低线程的优先级:
System.Threading.Thread.CurrentThread.Priority = ThreadPriority.Lowest;
我也试过设置优先级
Process p = Process.GetCurrentProcess();
p.PriorityClass = ProcessPriorityClass.BelowNormal;
我还认为由于在虚拟机上运行,CPU 使用率可能很高。但这个理论并没有把我带到任何地方。这很荒谬。我不知道还能转向哪里。我不确定为什么启动计时器或线程会像在 .NET 框架中那样将我的 CPU 使用率发送到天花板。我在构建 COM 对象时从未遇到过这种情况。有人对我可以转向哪里有什么好主意吗?
提前感谢您的宝贵时间。
【问题讨论】:
标签: c# .net multithreading timer cpu