当我在 C# 中有两个实例时PrintQueue
,同一台打印机。一个是我在调用 .refresh() 之前创建的,另一个是在调用 .refresh() 之后创建的。我把那些PrintQueue
s 放在一个 ArrayList 中。并旋转它们。但是我得到了不同的结果,如下所示:
if(arrPrintersOld != null)
{
arrPrintersOld.Clear();
arrPrintersOld = null;
}
arrPrintersOld = arrPrinters;
arrPrinters = new ArrayList();
PrintQueueCollection printQueues = null;
// PrintServer Class = Manages the print queues on a print server,
// which is usually a computer, but can be a dedicated hardware print server appliance.
PrintServer printServer = new PrintServer();
printQueues = printServer.GetPrintQueues(new[] { EnumeratedPrintQueueTypes.Local, EnumeratedPrintQueueTypes.Connections });
foreach (PrintQueue pq in printQueues)
{
pq.Refresh();
arrPrinters.Add(pq);
}
if(!blnFirstTimePrinterList)
{
comparePrinterLists();
PrintQueue tempOld = (PrintQueue)arrPrintersOld[0];
PrintQueue tempNew = (PrintQueue)arrPrinters[0];
Console.WriteLine("OldPrinter 1 is paused:" + tempOld.IsPaused);
Console.WriteLine("NewPrinter 1 is paused:" + tempNew.IsPaused);
}
一旦我取消暂停打印机,我在 tempOld.IsPaused 处得到一个真值,在 tempNew.IsPaused 处得到一个假值;
但是当我再次暂停打印机时,我得到一个 true 和 tempOld.IsPaused 以及一个 true 和 TempNew.IsPaused?
那么 refresh() 函数是否也适用于我是否遗漏了什么?