以下代码会导致System.InvalidOperationException,因为存在问题的文件仍在使用中。PDFTron文档中没有关于如何关闭文件的明确指导,但以下是例外情况:
// in my dispose method. _pdfViewWpf is a pdftron.PDF.PDFViewWPF, and _pdfPath is the filepath I set the doc to.
_pdfViewWpf.CloseDoc();
_pdfViewWpf.Dispose();
File.Move(_pdfPath, @"C:\myFilePath\Test.pdf");为了使PDFTron正确地释放和关闭文件,我遗漏了什么?
发布于 2020-04-20 20:05:33
我在PDFDoc上缺少了一个Dispose()调用,该调用被设置为PDFViewWPF上的Doc。我将它保存在私有成员变量中:
_pdfDoc = new PDFDoc(pdfPath);并将这一行添加到我的dispose方法中:
_pdfViewWpf.CloseDoc();
_pdfViewWpf.Dispose();
if (_pdfDoc != null) _pdfDoc.Dispose();
File.Move(_pdfPath, @"C:\myFilePath\Test.pdf");现在,File.Move方法在不引发异常的情况下工作。
发布于 2020-04-20 20:57:32
感谢您对我们的指导意见,我们将期待改进这一部分。我们的示例项目中确实有大量的示例代码,因此您也可以在实践中看到如何做一些事情。
对于非交互式PDF处理,using语句是确保文件句柄和内存在使用PDFDoc实例时立即释放的最简单方法。
要进行交互式查看,可以执行以下操作。
PDFDoc oldDoc = _pdfViewWpf.GetDoc();
_pdfViewWpf.CloseDoc();
// or instead of above line, if you want to reuse the viewer call
//_pdfViewWpf.SetDoc(otherPDFDoc);
if(oldDoc != null) oldDoc.Close();https://stackoverflow.com/questions/61331113
复制相似问题