如何在C#.NET中捕获打印作业

Mer*_*aya 5 .net c# printing

我正在尝试捕获在本地网络中提交给打印机的每个打印作业.我想显示工作的一些属性,如工作名称,提交时间等.

我尝试了一个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)

编辑: 上面的代码实际上工作,你不需要更低级别,如果它适合你,我的错误是没有正确配置默认打印机.

Mer*_*aya 5

我找到了解决方案.对于那些正在寻找处理打印作业事件的方法,请看一下:

FindFirstPrinterChangeNotification

还可以找到工作代码监视打印作业