如何开始一个过程而不等到它退出?

时间:2019-07-09 12:45:41

标签: c# asp.net

我使用Process类启动.exe,但是它将停止所有先前的线程,直到结束。如何启动流程并立即保留资源,以便我所有正在运行的方法都可以恢复工作?

我试图评论p.WaitForExit(60000);并没有帮助。

private string startProcess(string fileName, string args)
{
    string result;
    Process p;
    ProcessStartInfo psi = new ProcessStartInfo();
    psi.FileName = fileName;
    psi.Arguments = args;
    psi.WorkingDirectory = "...\\upload";
    psi.UseShellExecute = false;
    psi.CreateNoWindow = true;
    psi.StandardOutputEncoding = System.Text.Encoding.UTF8;
    psi.RedirectStandardInput = true;
    psi.RedirectStandardOutput = true;
    psi.RedirectStandardError = true;

    p = Process.Start(psi);

    try
    {
        string output = p.StandardOutput.ReadToEnd();

        p.WaitForExit(60000);

        if (p.ExitCode != 0)
           throw new Exception("Program returned with error code " + p.ExitCode);

        result = output.ToString();
     }
     catch (Exception ex)
     {
        result =  ex.ToString();
     }
     finally
     {
         p.Close();
         p.Dispose();
     }

     return result;
}

在我评论了WaitForExit,If语句和ExitCode和StandardOutput之后,线程正在按我的方式工作。

0 个答案:

没有答案