我有一个 C# 应用程序,它使用 System.Diagnostics.Process 来运行另一个 exe。我遇到了一些示例代码,其中进程在 try block 中启动并在 finally block 中关闭。我还看到了进程未关闭的示例代码。
当进程没有关闭时会发生什么?
当创建进程的控制台应用程序关闭时,进程使用的资源是否被回收?
在长时间打开的控制台应用程序中打开大量进程而不关闭其中任何一个是否不好?
干杯!
最佳答案
当另一个进程退出时,所有它的资源都被释放,但是你仍然会持有一个进程句柄(它是一个指向 block 的指针有关流程的信息),除非您在 Process
引用上调用 Close()
。我怀疑会有很多问题,但是你也可以。Process
实现了 IDisposable
所以你可以使用 C# 的 using( ...)
语句,它将自动为您调用 Dispose
(因此 Close()
):
using (Process p = Process.Start(...))
{
...
}
根据经验:如果某物实现了IDisposable
,您确实应该调用Dispose
/Close
或在上面使用 using(...)
。
关于c# - 如果我不在我的 C# 控制台应用程序中关闭 System.Diagnostics.Process,会发生什么情况?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/185314/