amad01pk Ответов: 1

Как управлять всеми заданиями печати на сервере печати с помощью классов PrintServer и PrintQueue


Привет, я новичок в csharp ,и мне было поручено управлять заданиями печати (пауза, аутентификация, возобновление )на сервере печати, к которому подключено почти 50 IP-принтеров.

теперь я могу приостановить и получить доступ к деталям заданий печати конкретного принтера на моем компьютере разработки с помощью класса printServer во время выполнения .



любить

PrintServer myprintServer = new PrintServer();

foreach (var job in myprintServer.GetPrintQueue("printerA").GetPrintJobInfoCollection())

job.pause();

пока моя программа работает и задание печати приходит, скажем, для printerB или printerC, они не контролируются. мне пришлось бы запускать отдельные циклы для всех, что невозможно.

есть ли способ, чтобы контролировать и остановить печать всех заданий, подходят ли они для принтера, Б, В и т. д., которые идут на сервер печати и проверки подлинности. либо я не нашел необходимых методов в пространстве имен system.printing, либо задача не может быть достигнута. плз, веди меня. заранее спасибо.

1 Ответов

Рейтинг:
2

Sampath Lokuge

Попробуйте, как показано ниже.Может быть, вам помогут.

PrintServer myprintServer = new PrintServer();

// List the print server's queues
PrintQueueCollection myPrintQueues = myPrintServer.GetPrintQueues();


foreach (var pq in myPrintQueues)
{
    
foreach (var job in myprintServer.GetPrintQueue(pq).GetPrintJobInfoCollection())
 {
job.pause();
 }

}


amad01pk

спасибо Сампат Lokuge за ваш ответ.

я действительно попробовал вышеупомянутую технику, которую вы предложили. теперь я могу получить доступ ко всем деталям.

после использования работы.пауза(); я хочу, чтобы аутентифицировать например

проверьте, если(job.submitter=="желаемый") job.resume(); else job.cancel():

та часть, когда я приостановил задание и оно проверяет аутентификацию в то время, когда приходит другое задание печати, оно просто проходит, не будучи обнаруженным и приостановленным кодом, и печатает, потому что код находится в цикле и проверяет предыдущее задание в этот момент.



есть ли способ обойти это? правильно ли я использую технику?