【发布时间】:2022-01-22 22:35:51
【问题描述】:
我正在构建一个小程序来检查资源监视器是否打开,如果是,则关闭它。
bool a = true;
while (a == true)
{
foreach (var p in Process.GetProcessesByName("perfmon"))
{
Process.Start("taskkill", "/F /IM perfmon.exe");
// "perfmon" "Taskmgr"
foreach (var t in Process.GetProcessesByName("taskkill"))
{
...
}
}
}
问题是它占用了我近 30% 的 CPU 性能,那么如何降低 CPU 使用率呢?
我还尝试添加其他程序,例如任务列表和任务管理器,但没有成功,您有什么想法吗? :
bool a = true;
while (a == true)
{
System.Threading.Thread.Sleep(1000);
foreach (var p in Process.GetProcessesByName("Taskmgr"))
{
Process.Start("taskkill", "/F /IM Taskmgr.exe");
// "perfmon" "Taskmgr"
foreach (var t in Process.GetProcessesByName("taskkill"))
{
System.Threading.Thread.Sleep(60000);
Process b = Process.Start("");
}
}
foreach (var p1 in Process.GetProcessesByName("perfmon"))
{
foreach (var t1 in Process.GetProcessesByName("taskkill"))
{
System.Threading.Thread.Sleep(60000);
Process b1 = Process.Start("");
}
}
foreach (var p2 in Process.GetProcessesByName("tasklist"))
{
foreach (var t2 in Process.GetProcessesByName("taskkill"))
{
System.Threading.Thread.Sleep(60000);
Process b2 = Process.Start("");
}
}
【问题讨论】:
-
这能回答你的问题吗? CPU friendly infinite loop
-
问题标题和正文不匹配。您可能应该更新标题,明确您询问的是 CPU 使用率而不是内存。
-
您是否考虑过在 Windows 本身中使用机器策略来禁用任务管理器的打开,而不是编写程序在看到它时将其关闭。 social.technet.microsoft.com/Forums/ie/en-US/…
-
我不想禁用任务管理器,Process.Start("taskkill", "/F /IM perfmon.exe");可以替换为 Process.Start("taskkill", "/F /IM chrome.exe");或者什么
标签: c# memory memory-management cpu-usage