Превращение WebBrowser.Print () в функцию блокировки - PullRequest
0 голосов
/ 10 февраля 2020

Я использую C# winforms для разработки программного обеспечения и использую WebBrowser . Я понял, что функция Print() не блокирует, но мне нужно выполнить функцию до и после процесса печати. Есть ли способ проверить наличие события печати или других атрибутов, которые могли бы позволить мне остановить выполнение программы до завершения печати?

1 Ответ

1 голос
/ 10 февраля 2020

Функция печати должна только добавить задание в очередь печати компьютера и будет выполнена очень быстро. Однако вы можете использовать классы System.Printing.PrintServer и System.Printing.PrintQueue.

  1. используйте new PrintServer(), чтобы получить экземпляр для локального компьютера.
  2. , затем используйте GetPrintQueues() в экземпляре для получения всех локальных очередей.
  3. затем выполните итерации очередей и проверьте их свойство NumberOfJobs, чтобы проверить, нужно ли печатать какой-либо элемент.

, если вы хотите событие, которое вы на самом деле должны были бы реализовать это событие самостоятельно. как:

public static event Action OnEmptyPrintQueue;
private static void Main(string[] args)
{
    new Task(() =>
    {
        var wasEmpty = true;
        while (true)
        {
            if (wasEmpty && NumberOfJobs > 0)
            {
                wasEmpty = false;
            }
            else if (!wasEmpty && NumberOfJobs == 0)
            {
                wasEmpty = true;
                OnEmptyPrintQueue?.Invoke();
            }
        }

    }, TaskCreationOptions.LongRunning).Start();
}
...