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()); }