gpt4 book ai didi

C# 故意循环。 (低 CPU 使用率)

转载 作者:行者123 更新时间:2023-12-04 09:42:38 28 4
gpt4 key购买 nike

编辑: 感谢大家在这里提供答案,项目已完成。

https://github.com/0xyg3n/ProcessDaemon/

如果有人想出可能会更好的多线程解决方案,我想。

我是 C# 的新手,我想问一下创建一个不会破坏你的 cpu 使用的有意无限循环的最佳方法是什么......更像是一个守护进程。

软件的概念是:
创建一个能够确定特定进程是否正在运行的软件,以便执行代码块打破循环并再次执行循环。我知道如何扫描流程并制作循环等,但我想要一些轻量级的东西。 C# 默认情况下作为单线程运行,也许如果我将 while(true) 作为多线程来解决我的问题?

提前致谢!

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Diagnostics;

namespace ProcessDaemon
{
class Program
{
static void Main(string[] args)
{

void CP()
{
Process[] pname = Process.GetProcessesByName("notepad");
if (pname.Length == 0)
{
//if not running
}
else
{
//if running
//break the code
//retry loop
}
}


void cronCP()
{
while(true)
{
CP();
}
}

cronCP(); //scan the processes infinitely.
}
}
}

最佳答案

您可以将代码转换为异步代码,然后添加 Task.Delay(xx) 以在等待时释放进程

namespace ProcessDaemon
{
class Program
{
static async Task Main(string[] args)
{

void CP()
{
Process[] pname = Process.GetProcessesByName("notepad");
if (pname.Length == 0)
{
//if not running
}
else
{
//if running
//break the code
//retry loop
}
}


async Task cronCP()
{
while (true)
{
await Task.Delay(1000);
CP();
}
}

await cronCP(); //scan the processes infinitely.
}
}
}

关于C# 故意循环。 (低 CPU 使用率),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62259009/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com