【问题标题】:When doing a Process.Start() do you need to wrap it in a using?执行 Process.Start() 时是否需要将其包装在 using 中?
【发布时间】:2009-11-04 05:59:02
【问题描述】:

当你开始一个过程并且不关心结果时这样可以吗?

Process.Start(xxx);

或者你应该这样做

using (Process.Start(xxx)){}

【问题讨论】:

  • 请注意,使用 u 之类的缩写通常会让人感觉很糟糕...

标签: .net process idisposable


【解决方案1】:

查看Process.dispose(bool) 方法的实现表明它在Process 实例上调用Close()。这反过来又清理了本机进程句柄,因此这可能不是一个坏主意。

它还清理用于检查进程是否已退出的等待句柄。

即使你不使用using (...) 块,终结器最终也会捕获这些资源。

【讨论】:

    【解决方案2】:

    Process.Start 返回的Process 对象包含一个Windows 进程HANDLE,因此一旦您不再需要使用Process 对象,就应该将其释放。

    如果您根本不需要使用返回的Process 对象,那么您显示的空using 块就可以了。请注意,处理 Process 会释放句柄,但它(幸运的是)不会停止进程的执行。

    【讨论】:

      猜你喜欢
      • 2014-09-17
      • 2016-09-20
      • 1970-01-01
      • 2014-11-17
      • 2019-01-25
      • 2011-01-03
      • 2015-07-24
      • 2013-01-09
      • 2011-08-25
      相关资源
      最近更新 更多