我是C#的新手,我被指派在连接了近50台IP打印机的打印服务器上控制打印作业(暂停,验证,恢复)。
现在,我可以在运行时使用printServer类在我的开发PC上暂停和访问特定打印机的打印作业的详细信息,例如:
PrintServer myprintServer = new PrintServer();
foreach (var job in myprintServer.GetPrintQueue("printerA").GetPrintJobInfoCollection())
job.pause();
当我的程序正在运行并打印作业时,让我们说打印机B或打印机C它们不受控制。我将不得不为所有不可能的循环运行。
是否有任何方法可以控制和暂停所有打印作业,无论它们是针对打印服务器上接收到的打印机A,b,c等,并检查是否有身份验证。要么我没有在System.Printing
命名空间中找到所需的方法,要么无法实现任务。
答案 0 :(得分:2)
GetPrintQueues
应返回打印机上所有打印队列的集合:
PrintServer myprintServer = new PrintServer();
foreach (var queue in myprintServer.GetPrintQueues)
foreach (var job in queue.GetPrintJobInfoCollection())
job.pause();
请注意,overload有一个有效打印队列类型列表
或者使用Linq的SelectMany
:
foreach (var job in queue.GetPrintQueues.SelectMany(q => GetPrintJobInfoCollection())
job.pause();