我使用 C# 4.0 创建了一个 System.Diagnostics.Process
,我希望它能在很短的时间内运行。如果由于某种原因进程在一段时间后没有退出(例如,我调用了 .WaitForExit(timeout)
并且返回值为 false
),我需要清理。我决定在这种特殊情况下使用 .Kill()
是安全的(没有我担心损坏的数据结构)。
鉴于此设置,我是否还需要调用 Process 的 .Close()
方法?如果是这样,我应该在 .Kill()
之前还是之后调用 .Close()
?
最佳答案
System.Diagnostics.Process
工具 IDisposable
通过 Component
类和 protected Dispose(bool)
方法调用 Close()
.通常认为在用完后释放一次性资源是一种很好的做法,因为这将立即释放与该类关联的所有资源(不必等待 GC 运行)。
所以回答你的问题:
是的,请调用Close()
通过调用 Dispose()
方法直接或通过 C# using
构造如下。
using(Process proc = CreateProcess())
{
StartProcess(proc);
if (!proc.WaitForExit(timeout))
{
proc.Kill();
}
}
关于c# - 如果我使用 .Kill() 终止 System.Diagnostics.Process,我是否还需要调用 .Close()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5642967/