Po wyświetleniu pliku XPS w przeglądarce dokumentów WPF i zamknięciu instancji DocumentViewer plik XPS jest zablokowany i nie można go usunąć. Muszę zwolnić blokadę pliku XPS, aby móc go usunąć, napisać inny o tej samej nazwie i opcjonalnie wyświetlić ten nowy plik XPS w nowej instancji DocumentViewer. Muszę to zrobić w tej samej aplikacji - bez zamykania aplikacji (jest to scenariusz podglądu wydruku).Jak uzyskać przeglądarkę dokumentów WPF, aby zwolnić blokadę pliku w źródłowym dokumencie XPS?
Innymi słowy, w jaki sposób można uzyskać poniższy kod, bez wyrzucania wyjątku w "File.Delete (tempXpsFile);" komunikat?
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();
Zamykanie aplikacji zwalnia blokadę pliku, jak wspomniano w WPF DocumentViewer doesn't release the XPS file, ale to nie jest opcją w tym scenariuszu.
Ten jeden przykuł mnie, mam widza, który pobiera dokument, kiedy ustawił dokument, który zawiedzie nawet po zastosowaniu tych zmian.Kiedy ładowałem dokument, wyrzucałem oryginalny dokument, który spowodowałby niepowodzenie wydania, gdy poszłam przeładować dokument. –