在 WPF DocumentViewer 中显示 XPS 文件并关闭 DocumentViewer 实例后,XPS 文件被锁定,我无法删除它。我需要解除对 XPS 文件的锁定,以便删除它,用相同的名称编写另一个文件,并可选择在新的 DocumentViewer 实例中显示新的 XPS 文件。我需要在同一个应用程序实例中执行此操作 - 无需关闭应用程序(这是打印预览场景)。
换句话说,我如何让以下代码运行而不在“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 中所述,不会释放 XPS 文件,但在这种情况下这不是一个选项。