I want to kill a process running on the machine using taskkill if they're still running after X seconds (a windows service was stopped but it takes time for processes to dissapear) What's the most correct way to accomplish the above in C# (.net 2.0 or possibly 3.0)?
I've utility method for verifying whether a process is still running, given the process name (using Process.GetProcesses()
).
(As the process is not spawned by my code, I can't use WaitTillExit to know when it's no longer running)
PS: the process runs on a remote machine
In fact, you can use Process.WaitForExit().
Simply get the process to wait for via
Process p = Process.GetProcessById(iYourID);
And then call
if(!p.WaitForExit(iYourInterval))
{
p.Kill();
}
You can also get processes via their name by
Process.GetProcessesByName(strYourProcessName);
You could call Process.WaitForExit
, passing the appropriate timeout. This way you won't need to use your own check to see whether the process is still running.
Process p = ...
bool exited = p.WaitForExit(10000); // 10 seconds timeout
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With