【发布时间】:2020-09-27 05:42:34
【问题描述】:
编辑: 感谢大家在这里提供答案,项目已完成。
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.
}
}
}
【问题讨论】:
-
您只需要
Timer。 -
好吧,计时器可以做我需要的事情,但我不想要一个计时器,因为我希望它能够即时响应。
-
您接受的解决方案也不是立即响应的。它还将每 1 秒完成一次工作。
-
是的,但cpu使用率真的没那么糟糕!我确实相信最好的方法是使用多线程。我只是不知道该怎么做。
标签: c# loops while-loop