Using C# 4.0, I\'ve created a System.Diagnostics.Process
that I expect to take a short amount of time to run. If for some reason the process hasn\'t exited after so
System.Diagnostics.Process
implements IDisposable
via the Component
class, and the protected Dispose(bool)
method calls Close()
. It is generally considered good practice to dispose of disposable resources when you are done with them, as this will immediately release any resources associated with the class (not having to wait for the GC to run).
So to answer your question:
Yes, please call Close()
by calling the Dispose()
method directly or via the C# using
construct as follows.
using(Process proc = CreateProcess())
{
StartProcess(proc);
if (!proc.WaitForExit(timeout))
{
proc.Kill();
}
}
Process.Kill()
and Process.Close()
both internally call Close()
on the private SafeProcessHandle object associated with the process. However, Process.Close()
also explicitly resets several other internal members.
Since Process implements IDisposable
, you should always call Close()
on it when you are done, or wrap it in a using
block.