Функция печати должна только добавить задание в очередь печати компьютера и будет выполнена очень быстро. Однако вы можете использовать классы System.Printing.PrintServer и System.Printing.PrintQueue.
- используйте
new PrintServer()
, чтобы получить экземпляр для локального компьютера. - , затем используйте
GetPrintQueues()
в экземпляре для получения всех локальных очередей. - затем выполните итерации очередей и проверьте их свойство
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();
}