C#之后做一些动作,保持活动状态,以捕捉流程的开始和结束
我已经编写了一个C#控制台应用程序,它执行一些操作,之后我需要保持它的活动状态,以捕获辅助程序的启动和关闭 设置应如下所示:C#之后做一些动作,保持活动状态,以捕捉流程的开始和结束,c#,visual-studio,C#,Visual Studio,我已经编写了一个C#控制台应用程序,它执行一些操作,之后我需要保持它的活动状态,以捕获辅助程序的启动和关闭 设置应如下所示: 运行一次 行动1 行动2 行动3 保持循环 如果进程x.exe正在运行>执行操作 如果进程x.exe未运行>执行操作 循环应该是无止境的。每次启动或停止进程x.exe时,它都应该反复执行该操作 我不确定该怎么做 使用While循环会杀死CPU,因此这不是正确的做法 提前谢谢。请看一下。它允许您订阅临时事件通知,如进程启动 string startEventName =
运行一次 行动1 行动2 行动3 保持循环 如果进程x.exe正在运行>执行操作 如果进程x.exe未运行>执行操作
循环应该是无止境的。每次启动或停止进程x.exe时,它都应该反复执行该操作 我不确定该怎么做
使用While循环会杀死CPU,因此这不是正确的做法 提前谢谢。请看一下。它允许您订阅临时事件通知,如进程启动
string startEventName = "InstanceCreationEvent";
string stopEventName = "InstanceDeletionEvent";
string processName = "notepad.exe";
ListenForProcess(processName, startEventName, (sender, e) =>
{
Console.WriteLine("Process Started");
});
ListenForProcess(processName, stopEventName, (sender, e) =>
{
Console.WriteLine("Process Stopped");
});
此功能将侦听以下事件:
static void ListenForProcess(string processName,
string eventName, EventArrivedEventHandler eventHandler)
{
string queryString =
$@"SELECT TargetInstance
FROM __{eventName}
WITHIN 0.1
WHERE TargetInstance ISA 'Win32_Process'
AND TargetInstance.Name='{processName}'";
using (var watcher = new ManagementEventWatcher(queryString))
{
watcher.EventArrived += eventHandler;
watcher.Start();
new Thread(() =>
{
while (true)
{
watcher.WaitForNextEvent();
}
}).Start();
}
}
“使用While循环会杀死CPU”。。。谁告诉你的?我的任务管理器以15%的CPU运行应用程序。这正是我需要的!不过有一件事。每当我在文件中运行此命令时,名为“WMI提供程序主机”(WmiPrvSE.exe)的文件将开始使用大量CPU。我说的是我i7的50/60%。如果我关闭我的应用程序并再次运行它,它会更高,直到达到100%。在我的电脑中,它需要0%的CPU。尝试创建新项目并仅粘贴此代码。然后您可以检查资源使用情况。