GetPrintJobInfoCollection

GetPrintJobInfoCollection

这段看起来似乎无用的代码重现了该问题。另一个应用程序正在使用
http://printqueuewatch.codeplex.com/在将打印作业发送到打印机时得到通知。
它可以工作,但有时当您发送打印作业时,它会在此处GetPrintJobInfoCollection崩溃。
我已经粘贴了内部异常。为了重现,我用Notepad++或我的应用程序发送了一个小文本文件,大约20次,直到崩溃。
如果在崩溃后我调用GetPrintJobInfoCollection,则它可以成功运行,或者我重试。

任何建议如何解决这个问题?

while (true)
{
    Thread.Sleep(10);

    LocalPrintServer server = new LocalPrintServer();

    var q = server.GetPrintQueue("vp1");
    q.Refresh();
    // Debug.WriteLine(q.IsBusy);
    PrintJobInfoCollection infos = null;
    infos = q.GetPrintJobInfoCollection();
}

错误中
System.NullReferenceException was unhandled   Message=Object reference
not set to an instance of an object.   Source=System.Printing
StackTrace:
    at MS.Internal.PrintWin32Thunk.AttributeNameToInfoLevelMapping.InfoLevelCoverageList.Release()
    at MS.Internal.PrintWin32Thunk.EnumDataThunkObject.GetPrintSystemValuesPerPrintJobs(PrintQueue
printQueue, Queue`1 printObjectsCollection, String[] propertyFilter,
UInt32 firstJobIndex, UInt32 numberOfJobs)
    at System.Printing.PrintJobInfoCollection..ctor(PrintQueue printQueue, String[] propertyFilter)
    at System.Printing.PrintQueue.GetPrintJobInfoCollection()
    at WpfApplication7.MainWindow.button2_Click(Object sender, RoutedEventArgs e) in

最佳答案

根据this MSDN article的说法,您不应使用 System.Printing 命名空间。



我认为您的问题是由于资源泄漏造成的。 LocalPrintServer类似乎是不受管理的资源,需要进行处理。

关于c# - GetPrintJobInfoCollection()有时会异常,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18243519/

10-09 20:02