我正在尝试打印多个 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
