C# 如何检查进程是否在WCF c中终止#

C# 如何检查进程是否在WCF c中终止#,c#,process,C#,Process,我有一个WCF rest服务,其中有一个进程的执行: ProcessStartInfo startInfo = new ProcessStartInfo(); startInfo.FileName = "cmd.exe"; startInfo.Arguments = "/C " + Properties.Resources.NAME_APP_IAL + " " + ...); startInfo.WorkingDirectory =

我有一个WCF rest服务,其中有一个进程的执行:

        ProcessStartInfo startInfo = new ProcessStartInfo();
        startInfo.FileName = "cmd.exe";
        startInfo.Arguments = "/C " + Properties.Resources.NAME_APP_IAL + " " + ...);
        startInfo.WorkingDirectory = HttpContext.Current.Server.MapPath(@"" + ...);
        startInfo.CreateNoWindow = false;
        startInfo.UseShellExecute = false;
        Process oProcess = null;
        try
        {
            oProcess = Process.Start(startInfo);
            bool bStep = true;
            while (bStep)
            {
                Process[] oPro = Process.GetProcessesByName(Properties.Resources.NAME_APP_IAL);
                if (oPro == null || oPro.Count() == 0 ) bStep = false;
            }
        }

        catch (Win32Exception ex)
        {
            throw ..
        }
这个过程很好

但当它完成后,我得到了一个文件

我的问题是进程很快终止,所以我得到了空文件! 那么我如何修复它:确保processus首先完成或终止? 此外,通过此验证,如果我有异常或进程被阻止或其他任何情况,我如何识别它


感谢您的帮助以及您的建议和建议,

您需要使用WaitForExit


WCF是一个通信框架,它不单独运行或处理进程。你所问的和许多询问如何使用
过程的问题没有什么不同。首先,直接调用程序,而不是使用
cmd/c
FileName
Properties.Resources.NAME\u APP\u IAL
,而不是
cmd.exe
。当然,另一个问题是,为什么像使用CGI一样调用外部程序?这是非常缓慢的,无法缩放。
   using (Process exeProcess = Process.Start(startInfo))
   {
       exeProcess.WaitForExit();
   }