我试图捕获提交给本地网络中的打印机的每个打印作业。我想显示工作的一些属性,如工作名称,提交时间等。如何在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