我試圖捕獲提交給本地網絡中的打印機的每個打印作業。我想顯示工作的一些屬性,如工作名稱,提交時間等。如何在C#.NET中捕獲打印作業
我試過了一個while循環,但它沒有捕獲我的打印作業,也許是因爲它在線程正在睡眠時發生。有沒有我可以註冊和處理的事件?我不想花費所有的CPU資源來完成這項任務。
我嘗試這樣做:
public static void WritePrinterJobs()
{
while (true)
{
foreach (var job in LocalPrintServer.GetDefaultPrintQueue().GetPrintJobInfoCollection())
{
Console.WriteLine(job.Submitter + " " + job.TimeJobSubmitted.ToShortDateString());
}
Thread.Sleep(100);
}
}
編輯: 上面的代碼實際工作,你不需要如果它不爲你工作,我的錯誤是沒有正確配置默認打印機去低級別。
http://stackoverflow.com/questions/6506916/events -in -printqueue – adt 2012-04-19 13:44:14
讓我們注意到,如果你使用的是一直在運行的foreach循環,如果大量的打印作業同時發生,那麼打印的文檔可能會在代碼發現之前被打印出來它 – 2012-04-19 13:48:47
但仍然必須使用計時器再次檢查打印作業嗎?我認爲沒有任何JobAdded類型的事件可以掛鉤,對吧? – 2012-04-19 13:55:35