首页 > 解决方案 > 执行后关闭控制台窗口

问题描述

我正在使用以下代码从 ac# 代码打开一个控制台程序

ProcessStartInfo startInfo = new ProcessStartInfo(@"exepath");
startInfo.WindowStyle = ProcessWindowStyle.Normal;
startInfo.Arguments = string.Format("b{0} {1} {2}", i, var1, var2);
Process.Start(startInfo);

这将导致打开一个新的控制台窗口并从控制台执行代码。但我注意到,一旦执行完成,这个控制台窗口就没有关闭。打开的控制台程序的Program.cs只有这样

    static void Main(string[] args)
    {
        Console.write("Executing....");          
        if (args == null || args.Length==0)
        {
            Console.write("No parameters....");
        }
        else
        {
            string batch = args[0];
            int offset = Convert.ToInt16(args[1]);
            int limit = Convert.ToInt16(args[2]);
            Console.write("Found few parameters....");                 
            ExecuteAFunction(offset, limit);

        }
         Console.write("End");
    }

没有 Console.ReadLine 或等待输入的代码被写在这里。那么如何确保代码 Process.Start 打开的窗口在执行完成后关闭

标签: c#process

解决方案


您要么需要等待过程完成,如下所示

Process p = new Process();
ProcessStartInfo psi = new ProcessStartInfo();
psi.FileName = "CMD.EXE";
//command may be on command window 
p.Start(psi);
p.WaitForExit(); //wait for exit

或者应该关闭

Process myProcess = Process.Start(psi); 
//close it 
myProcess.CloseMainWindow(); 
myProcess.Close(); 

//or kill process 
myProcess.Kill();

推荐阅读