Itext Sharp - 多线程问题

时间:2015-11-30 12:40:52

标签: c# itextsharp itext

  

:复制内存时检测到可能的I / O竞争条件。默认情况下,I / O包不是线程安全的。在多线程应用程序中,必须以线程安全的方式访问流,例如TextReader或TextWriter的Synchronized方法返回的线程安全包装器。这也适用于StreamWriter和StreamReader等类。

在线阅读,看起来像iText PDF sharp是线程安全的(但也许我错了!)。

在并行for循环中运行Itext时,我得到了上述异常。

 iTextSharp.text.pdf.PdfReader pdfReader = new iTextSharp.text.pdf.PdfReader(path);

        StringBuilder text = new StringBuilder();

        Parallel.For(1, pdfReader.NumberOfPages + 1, page =>
            {
                ITextExtractionStrategy strategy = new SimpleTextExtractionStrategy();

                string currentText = PdfTextExtractor.GetTextFromPage(pdfReader, page, strategy);

                text.Add(currentText);
            }
        );
        pdfReader.Close();

1 个答案:

答案 0 :(得分:3)

只有一个线程可以同时访问相同的文档。 iText(夏普)是线程安全的,因为多个线程可以同时创建和操作不同的文档。