:复制内存时检测到可能的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();
答案 0 :(得分:3)
只有一个线程可以同时访问相同的文档。 iText(夏普)是线程安全的,因为多个线程可以同时创建和操作不同的文档。