Pav*_*yan 7 .net c# windows process
我有一个运行另一个的程序(让我们调用第一个应用程序Stater和第二个应用程序 - 工作者).
我用
process.start();
process.waiForExit();
process.Close();
Run Code Online (Sandbox Code Playgroud)
在初学者.
但是如果Starter在等待Worker时被迫关闭(出于某些外部原因),Worker仍将处理进程,阻塞文件,吃内存等.
所以,我想在我尝试启动之前检查Worker是否已经运行.我已经尝试过Process.GetProcessesByName("worker.exe")但没有运气(即使我可以在任务管理器中看到Worker).
我在这里看到了一些关于检查内存中每个进程的模块的主题,但我仍然知道正在运行的文件,我希望避免这样的解决方案.
有什么建议吗?
Tun*_*ung 18
你无法找到它的原因是因为你正在使用.exe.如果可执行文件在TaskManager中显示为worker.exe,则只需调用:
Process[] workers = Process.GetProcessesByName("worker")
foreach (Process worker in workers)
{
worker.Kill();
worker.WaitForExit();
worker.Dispose();
}
Run Code Online (Sandbox Code Playgroud)
在启动工作进程时,将其ID保存在应用程序的配置/设置文件中,这样当您启动Starter进程时,它将首先从设置文件中加载该ID,并检查该进程当前是否正在运行.如果要立即关闭工作进程,可以调用process.Kill()
它.
这要容易得多...
System.Diagnostics.Process.Start("cmd.exe","/c taskkill /IM notepad.exe");
Run Code Online (Sandbox Code Playgroud)
此代码将关闭记事本(如果它正在运行)。键入要关闭的程序名称及其扩展名 (.exe)。
某些应用程序无法在不强制的情况下停止。使用/F
aftertaskkill
强制操作。如果要关闭进程树,请/T
在程序名称后使用。
System.Diagnostics.Process.Start("cmd.exe","/c taskkill /F /IM notepad.exe /T");
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
24824 次 |
最近记录: |