在WPF DocumentViewer中显示XPS文件,关闭DocumentViewer实例后,XPS文件被锁定,我无法删除它。 我需要释放XPS文件上的锁,以便我可以删除它,使用相同名称编写另一个文件,并可选择在新的DocumentViewer实例中显示该新XPS文件。 我需要在同一应用程序实例中执行此操作-而无需关闭应用程序(这是打印预览场景)。
换句话说,在不抛出异常的情况下如何运行以下代码中的“File.Delete(tempXpsFile);”语句?
关闭应用程序确实会释放文件锁定,正如在WPF DocumentViewer doesn't release the XPS file中提到的那样,但在这种情况下不是一个选项。
换句话说,在不抛出异常的情况下如何运行以下代码中的“File.Delete(tempXpsFile);”语句?
var tempXpsFile = @"c:\path\to\Temporary.xps";
var previewWindow = new Window();
var docViewer = new DocumentViewer();
previewWindow.Content = docViewer;
GenerateXpsFile(tempXpsFile);
var xpsDocument = new XpsDocument(tempXpsFile);
previewWindow.ShowDialog();
File.Delete(tempXpsFile); //this will throw an exception due to a file lock on tempXpsFile
GenerateXpsFile(tempXpsFile); //assume this generates a different file
//otherwise the scenario doesn't make sense as we could just skip the above delete
//and this statement and re-use the same file
previewWindow = new Window();
docViewer = new DocumentViewer();
previewWindow.Content = docViewer;
previewWindow.ShowDialog();
关闭应用程序确实会释放文件锁定,正如在WPF DocumentViewer doesn't release the XPS file中提到的那样,但在这种情况下不是一个选项。