Получить момент фактического окончания печати в C # - PullRequest
0 голосов
/ 13 января 2019

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

Я печатаю, используя класс PrintDocument, я пробовал событие EndPrint, но оно срабатывает, когда файл отправляется на принтер, а не когда принтер выполняет свою работу. Также в системной очереди документ исчезает до окончания печати. Можно ли получить как-нибудь информацию о состоянии принтера?

            PrintDocument pd = new PrintDocument(); 
        PrinterSettings.PaperSizeCollection ps = pd.PrinterSettings.PaperSizes;
        PaperSize size = new PaperSize();
        foreach (PaperSize Psz in ps)
        {
            if (Psz.PaperName == ev.PaperSize)
            {
                size = Psz;
                break;
            }
        }
        pd.PrinterSettings.PrinterName =  ev.printerName;
        pd.DefaultPageSettings.PaperSize = size;
        pd.DocumentName = "aaaaa";
        pd.PrintPage += PrintPage2;
        pd.EndPrint += new PrintEventHandler(this.PrintEnd2);
        pd.Print();

        var myPrintServer = new LocalPrintServer();
        var pq = myPrintServer.GetPrintQueue(ev.printerName);

        var jobs = pq.GetPrintJobInfoCollection();

        foreach (var job in jobs)
        {
            var done = false;
            while (!done)
            {
                pq.Refresh();
                job.Refresh();
                done = job.IsCompleted || job.IsDeleted || job.IsPrinted;
            }   
        }

        ai++;
        PopAction();

1 Ответ

0 голосов
/ 13 января 2019

Это можно узнать через PrintSystemJobInfo.IsCompleted . https://docs.microsoft.com/en-us/dotnet/api/system.printing.printsystemjobinfo.iscompleted?view=netframework-4.7.2

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...