После отображения XPS-файла в WPF DocumentViewer и закрытия экземпляра DocumentViewer файл XPS заблокирован, и я не могу его удалить. Мне нужно освободить блокировку в файле XPS, чтобы я мог ее удалить, написать еще одно имя с таким же именем и, возможно, отобразить этот новый файл XPS в новом экземпляре DocumentViewer. Мне нужно сделать это в одном экземпляре приложения - без закрытия приложения (это сценарий предварительного просмотра).Как мне заставить DocumentViewer WPF освободить блокировку файла в исходном документе 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 doesn't release the XPS file, но это не вариант в этом случае.
Этот человек поймал меня, у меня есть средство просмотра, которое загружает документ, после того, как он установил документ, он сработает даже после применения этих изменений.Когда я загружал документ, я удалял исходный документ, который привел бы к ошибке выхода, когда я перегрузил документ. –