我遇到了一个奇怪的问题。在我的 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"
从 Batchfile 调用的应用程序在 15-20 秒(不定)后变为空闲状态。当我 checkin Process Explorer 时, fork 进程可用,但 CPU 时间在 15-20 秒后没有变化。我什至已经离开了一天,但仍然没有超时或进程完成。
当我单独执行批处理文件时,应用程序运行并正确完成。
我只能想到两种可能性
1) 由于某种超时,WCF 服务在一段时间后放弃了进程(但没有异常或任何其他指示) 2) 我从批处理文件调用的应用程序以有限的权限执行。因为当我查看应用程序日志时,我注意到应用程序在应该将文件写入主机 PC 的位置卡住。
注意:我什至尝试将 app.exe 作为进程直接调用,而不是使用批处理文件。结果完全一样。
最佳答案
1,你指定了 RedirectStandardOutput
,但你实际上并没有读取它的输出,所以它可能正在等待它的发生。
2、先尝试用可见窗口运行它,看看会发生什么。
3、尝试运行cmd.exe/c full_path_to\runapp.bat
。
关于c# - 从 WCF 服务派生的进程变得空闲,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20487906/