在做Process.Start()时你需要将它包装在一个使用中吗?

时间:2009-11-04 05:59:03

标签: .net process idisposable

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

Process.Start(xxx);

或者你应该这样做

using (Process.Start(xxx)){}

2 个答案:

答案 0 :(得分:6)

查看Process.dispose(bool)方法的实现会显示它在Close()实例上调用Process。这反过来会清理本机进程句柄,所以它可能不是一个坏主意。

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

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

答案 1 :(得分:3)

Process返回的Process.Start对象包含Windows进程HANDLE,因此一旦您不再需要使用Process对象,就应该将其处理掉。< / p>

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