Je suis en train d'afficher les travaux d'impression actuellement en file d'attente d'impression d'une imprimante par défaut sur la console en utilisant ce code:NullReferenceException lancée par GetPrintJobInfoCollection() en essayant d'obtenir les travaux d'impression de l'imprimante par défaut
for (;;)
{
string printerName = new System.Drawing.Printing.PrinterSettings().PrinterName;
System.Printing.LocalPrintServer localPrintServer = new System.Printing.LocalPrintServer();
System.Printing.PrintQueueCollection printQueues = localPrintServer.GetPrintQueues(new[] { System.Printing.EnumeratedPrintQueueTypes.Local, System.Printing.EnumeratedPrintQueueTypes.Connections });
if (printQueues == null) return;
System.Printing.PrintQueue queue = printQueues.Where(x => x.Name.Equals(printerName)).FirstOrDefault();
if (queue.NumberOfJobs <= 0)
Console.WriteLine("Queue Empty!");
else
{
Console.WriteLine("Number of Jobs: " + queue.NumberOfJobs);
foreach (System.Printing.PrintSystemJobInfo psji in queue.GetPrintJobInfoCollection())
{
Console.WriteLine(psji.Name);
}
Console.WriteLine("\n\nPress any key to exit...");
Console.ReadLine();
break;
}
}
Lorsque il n'y a aucun élément dans la file d'attente d'impression il affiche avec succès "Queue Vide!".
Mais quand je commence l'impression de document, NumberOfJobs
= 1 mais GetPrintJobInfoCollection()
lance NullReferenceException
.
Pourquoi il y a un travail et toujours son retour null
?
Quelle peut être la raison?
De plus, je n'ai pas d'imprimante alors j'essaye de l'imprimer sur "Microsoft Print to PDF".
l'a-t-il imprimé au moment où vous venez de l'afficher? – BugFinder
@BugFinder Non, mais dès qu'un travail est envoyé dans la file d'attente. –
Aussi ce n'est pas un doublon de la question @PatrickHofman mentionné. Je sais pourquoi 'NullReferenceException' est levé. Mais ma question est pourquoi cette fonction jette même s'il y a des données dans la collection. Veuillez supprimer le drapeau Dupliquer. –