Search code examples
c#visual-studiouser-interfacefreezewaitforexit

Visual C# GUI stops responding when process.WaitForExit(); is used


I am creating a GUI application using Visual C# 2005 (net framework 2). I use the following code to start a process:

Process process = new Process();
process.StartInfo = new ProcessStartInfo("app.exe");
process.StartInfo.WorkingDirectory = "";
process.StartInfo.Arguments = "some arguments";
process.Start();
process.WaitForExit();

I want my application to wait until this process is finished, so I used WaitForExit. But the GUI Windows freezes while app.exe is running. I want it to respond (e.g. press a cancel button), but I don't want the code to continue, because there is another process to start after than. Thanks in advance!


Solution

  • You can capture the Exited event of the Process class:

    void someMethod()
    {
        //...possibly more code here
        Process process = new Process();
        process.StartInfo = new ProcessStartInfo("app.exe");
        process.StartInfo.WorkingDirectory = "";
        process.StartInfo.Arguments = "some arguments";
        process.Exited += new EventHandler(ProcessExited);
        process.Start();
    }
    
    void ProcessExited(object sender, System.EventArgs e)
    {
      //Handle process exit here
    }