当前位置:  开发笔记 > 编程语言 > 正文

如果我不在我的C#控制台应用程序中关闭System.Diagnostics.Process会发生什么?

如何解决《如果我不在我的C#控制台应用程序中关闭System.Diagnostics.Process会发生什么?》经验,为你挑选了1个好方法。

我有一个C#应用程序,它使用System.Diagnostics.Process来运行另一个exe.我遇到了一些示例代码,其中进程在try块中启动并在finally块中关闭.我还看到了进程未关闭的示例代码.

当流程未关闭时会发生什么?

创建流程的控制台应用程序关闭时,是否回收了流程使用的资源?

在长时间打开的控制台应用程序中打开大量进程并且不关闭任何进程是不是很糟糕?

干杯!



1> Duncan Smart..:

当其他进程退出,所有资源都被释放了,但你仍然会持有到一个进程句柄(这是一个指向有关过程的信息块),除非你叫Close()上你的Process参考.我怀疑会有很多问题,但你也可以.Process实现IDisposable所以你可以使用C#的using(...)语句,它会自动调用Dispose(因此Close()):

using (Process p = Process.Start(...))
{
  ...
}

根据经验:如果某些东西实现了IDisposable,你真的应该调用Dispose/ Close或使用using(...)它.


请注意,在进程上调用Close不会导致进程退出.
推荐阅读
地之南_816
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有