我正在尝试捕获在本地网络中提交给打印机的每个打印作业.我想显示工作的一些属性,如工作名称,提交时间等.
我尝试了一个while循环,但它没有抓住我的打印作业,也许是因为它在线程正在睡觉时发生了.是否有可以注册和处理的事件?我不想花费所有CPU资源来完成此任务的infinetly循环.
我试过这个:
public static void WritePrinterJobs()
{
while (true)
{
foreach (var job in LocalPrintServer.GetDefaultPrintQueue().GetPrintJobInfoCollection())
{
Console.WriteLine(job.Submitter + " " + job.TimeJobSubmitted.ToShortDateString());
}
Thread.Sleep(100);
}
}
Run Code Online (Sandbox Code Playgroud)
编辑: 上面的代码实际上工作,你不需要更低级别,如果它适合你,我的错误是没有正确配置默认打印机.