gpt4 book ai didi

c# - 如果我使用 .Kill() 终止 System.Diagnostics.Process,我是否还需要调用 .Close()?

转载 作者:IT王子 更新时间:2023-10-29 04:43:32 25 4
gpt4 key购买 nike

我使用 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com