Пример #1
0
        private IEnumerable <CloudPrinter> DoGetPrintQueues()
        {
            LocalPrintServer                PrintServer          = new LocalPrintServer();
            PrintQueueCollection            PrintQueueCollection = PrintServer.GetPrintQueues(new[] { EnumeratedPrintQueueTypes.Local, EnumeratedPrintQueueTypes.Connections });
            Dictionary <string, PrintQueue> queuesToDispose      = new Dictionary <string, PrintQueue>(PrintQueues);

            foreach (string printername in PrinterSettings.InstalledPrinters)
            {
                if (PrintQueues.ContainsKey(printername))
                {
                    queuesToDispose.Remove(printername);
                }
                else
                {
                    var printQueue = PrintQueueCollection.SingleOrDefault(t => t.FullName == printername);
                    PrintQueues.Add(printername, printQueue);
                }
            }

            foreach (KeyValuePair <string, PrintQueue> pq_kvp in queuesToDispose)
            {
                PrintQueues.Remove(pq_kvp.Key);
                pq_kvp.Value.Dispose();
            }

            //return PrintQueues.Values.Where(q => q.is).Select(q => new CloudPrinterImpl(q)).ToArray();
            return(PrintQueues.Values.Select(q => new CloudPrinterImpl(q)).ToArray());
        }