0

当我在 C# 中有两个实例时PrintQueue,同一台打印机。一个是我在调用 .refresh() 之前创建的,另一个是在调用 .refresh() 之后创建的。我把那些PrintQueues 放在一个 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() 函数是否也适用于我是否遗漏了什么?

4

0 回答 0