代码:
using p = new Process();
p.StartInfo.UseShellExecute = true;
p.StartInfo.Verb = "printto";
p.StartInfo.FileName = fileName;
p.StartInfo.Arguments = printerName;
p.Start();
p.WaitForExit(20000);
有时会抛出:
“System.InvalidOperationException:没有进程与此对象关联。” 从.WaitForExit(20000)
线。
我们从事件日志中捕获了这个,所以它确实像这样发生了。我很困惑我们怎么会在之后立即处于“无进程”状态p.Start()
。我已经设法使无法运行的进程无法运行但通过了p.Start()
预检检查,但它们总是能够创建一个句柄,因此.WaitForExit()
总是通过报告它已经退出来工作。
我很困惑。ShellExecuteEx 调用某种 DDE 函数或其他不能识别进程的函数是合理的,但 Process API 似乎不支持该操作。调用代码也根本没有打开窗口,那么 DDE 源是什么?
我实际上不需要在这里等;我只需要检测它是否是一些 DDE 或其他废话,否则可以通过少量睡眠来做我需要的事情。
有一个近乎欺骗的结果是直接调用 iexplore 进程的答案,我不能使用。