微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Process.WaitForExit(n) 不会在 Process.Start()

如何解决Process.WaitForExit(n) 不会在 Process.Start()

代码

                                    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 进程的答案,但我无法使用。

解决方法

您需要确保 FilePath 指向可打印的文档(如 pdf doc 或 rtf)。并将打印机名称放在短语 p.StartInfo.Arguments = "\"" + printerName + "\""; 中,否则打印机将抛出错误。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。