我有一个C#应用程序,它使用System.Diagnostics.Process来运行另一个exe.我遇到了一些示例代码,其中进程在try块中启动并在finally块中关闭.我还看到了进程未关闭的示例代码.
当流程未关闭时会发生什么?
创建流程的控制台应用程序关闭时,是否回收了流程使用的资源?
在长时间打开的控制台应用程序中打开大量进程并且不关闭任何进程是不是很糟糕?
干杯!
当其他进程退出,所有的资源都被释放了,但你仍然会持有到一个进程句柄(这是一个指向有关过程的信息块),除非你叫Close()
上你的Process
参考.我怀疑会有很多问题,但你也可以.Process
实现IDisposable
所以你可以使用C#的using(...)
语句,它会自动调用Dispose
(因此Close()
):
using (Process p = Process.Start(...)) { ... }
根据经验:如果某些东西实现了IDisposable
,你真的应该调用Dispose
/ Close
或使用using(...)
它.