处理WaitForExit不等待

Mun*_*var 2 .net c# printing process processstartinfo

我创建了Print spooler应用程序来异步打印pdf.

(应用程序使用veryPDF命令从网络打印机打印)

这是Code

   var procStartInfo = new System.Diagnostics.ProcessStartInfo("cmd", " /c" + "E:\pdfprint_cmd\pdfprint.exe -$ 388444444448350FA394 E:\PrintSpoolerApplication\PrintSpoolerApplication\bin\Debug\45940.pdf");
   procStartInfo.WindowStyle = ProcessWindowStyle.Hidden;
   procStartInfo.Verb = "runas";
   procStartInfo.UseShellExecute = false;
   procStartInfo.CreateNoWindow = true;
   var proc = new System.Diagnostics.Process();
   proc.StartInfo = procStartInfo;
   proc.Start();
   proc.WaitForExit();

// Some stuff
Run Code Online (Sandbox Code Playgroud)

但它没有等待WaitForExit代码.即使我的文档在打印机队列中,它也执行了(这里//某些东西).

打印完成后是否还有其他通知方式?

Rob*_*ier 7

您的代码等待cmd.exe完成,它(可能)在pdfprint.exe作为子进程启动后立即终止.我建议你

  • 要么pdfprint.exe直接启动(为什么还要在这里使用Windows命令行?)
  • 或者找到子进程的Process对象 - 例如通过WMI,如此处所述 - 并等待进程退出.

但是,这两种方法仅在pdfprint.exe实际等待计划的打印作业完成时才起作用.我不知道这个工具,所以我不知道它是否表现得那么好.如果没有,则必须访问打印队列,不建议(正如Hans在其评论中指出的那样).

  • 要完成任务,您需要了解pdfprint.exe的工作方式,例如创建子进程(如果有). (2认同)