如何在不杀死进程的情况下处置System.Diagnostics.Process对象?

amn*_*sia 2 .net c#

我有一个应用程序,它创建Process对象以启动外部应用程序.一旦它验证应用程序已正确启动,它就不再关心它,所以我不再需要Process对象,但我不能在它上面调用Dispose(),因为我不想关闭该进程.这是什么解决方法?

g.p*_*dou 10

您可以安全地处理流程实例,该流程将在之后运行.

class Program
{
    static void Main(string[] args)
    {
        Process p = new Process
        {
            StartInfo = {FileName = "notepad.exe"}
        };
        p.Start();

        p.Dispose();
        // Notepad still runs...
        GC.Collect(); // Just for the diagnostics....
        // Notepad still runs...
        Console.ReadKey();
    }
}
Run Code Online (Sandbox Code Playgroud)

实际上,在您的.NET应用程序终止后,该过程(Notepad.exe)甚至会运行.顺便说一下,这是我建议不要担心流程实例并在流程实际终止之前处理它们的原因之一:您将丢失控制句柄以停止操作系统进程或查询其状态.除非你有多个Process实例,否则我不应该担心它们.