我面临一个奇怪的问题。在我的WCF服务中,我调用将调用应用程序的批处理文件。
ProcessStartInfo appInfo= new ProcessStartInfo("runApp.bat");
appInfo.RedirectStandardOutput = true;
appInfo.UseShellExecute = false;
appInfo.CreateNoWindow = true;
app.StartInfo = appInfo;
app.Start();
app.WaitForExit();
批处理文件: app.exe" path_of_the_file_needs_to_be_processes_as_argument"
在说15-20秒(变化)之后,从Batchfile调用的应用程序变得空闲。当我检查Process Explorer时,分叉进程可用,但CPU时间在15-20秒后没有移动。我甚至离开了这一天,仍然没有超时或过程完成。
当我单独执行批处理文件时,应用程序运行并正确完成。
我只能想到两种可能性
1)由于某种超时(但没有例外或任何其他指示),WCF服务在一段时间后放弃了该过程 2)我从批处理文件调用的应用程序以有限的权限执行。因为当我看到应用程序日志时,我注意到应用程序冻结在应该将文件写入主机PC的位置。
注意:我甚至尝试直接调用app.exe作为进程,而不是使用批处理文件。结果完全相同。
答案 0 :(得分:1)
1,您指定RedirectStandardOutput
,但实际上并没有读取它的输出,因此可能正在等待它发生。
2,首先尝试使用可见窗口运行它以查看会发生什么。
3,尝试运行cmd.exe /c full_path_to\runapp.bat
。