Skip to main content
 首页 » 编程设计

c#之实例化枚举器错误后修改了集合

2024年02月05日27softidea

我正在尝试打印多个 PDF 字节数组。由于我需要允许用户同时打印多个报告的功能,因此我使用了并行 foreach。该函数很好地通过了第一个字节数组,但是在第二个出队时,我得到了“在实例化枚举器之后修改了集合”。错误。如何解决此问题,同时仍允许用户同时打印?

代码如下:

public static void PrintingQueue(Queue<byte[]> printQueue, string printer, int copies) 
    { 
        Parallel.ForEach(printQueue, (currentFile) => 
        { 
            var printFile = printQueue.Dequeue(); 
            PrintWithGSPrint(printFile, printer, copies); 
 
        }); 
    } 

请您参考如下方法:

异常是告诉你发生了什么。由于正在修改集合,因此无法正确执行 foreach 语句。使用 Dequeue 方法,您可以从正在迭代的集合中删除一个项目。不要删除 foreach 循环内的项目,只需在完成任务后清理集合即可。

https://msdn.microsoft.com/en-us/library/1c8bzx97(v=vs.110).aspx

您可以做的另一件事是使用 for 语句向后遍历您的集合。这样,如果必须的话,您将能够删除这些元素。您可以使用此答案查看如何向后迭代:https://stackoverflow.com/a/1582317/637840