C# 如何检查进程是否在WCF c中终止#
我有一个WCF rest服务,其中有一个进程的执行: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 =
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();
}