没有WaitForExit()的using语句中的Process会发生什么?

use*_*282 5 c# idisposable using process

在下面的示例中,如果代码离开using语句后它仍在运行,那么该进程会发生什么?

using (var p = new Process())
{
    p.StartInfo.FileName = "c:\\temp\\SomeConsoleApp.exe";
    p.Start();
}
Run Code Online (Sandbox Code Playgroud)

das*_*ght 9

应该将系统上运行的操作系统进程与程序中代表 "句柄" 的Process对象分开:

  • 该过程将继续运行直至完成,或者您使用特定于操作系统的方法将其终止
  • Process对象被设置,这样你的程序可以不再与OS进程交互.

Dispose()Process对象调用方法不会杀死OS进程.