Dopo aver mostrato un file XPS nel DocumentViewer di WPF e chiuso l'istanza di DocumentViewer, il file XPS è bloccato e non riesco a cancellarlo. Devo rilasciare il blocco sul file XPS in modo da poterlo eliminare, scrivere un altro con lo stesso nome e, facoltativamente, visualizzare il nuovo file XPS in una nuova istanza di DocumentViewer. Devo farlo nella stessa istanza dell'app, senza dover chiudere l'app (questo è uno scenario di Anteprima di stampa).Come posso ottenere che DocumentViewer di WPF rilasci il blocco dei file sul documento XPS di origine?
In altre parole, come posso ottenere il seguente codice da eseguire senza generare un'eccezione in "File.Delete (tempXpsFile);" affermazione?
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();
chiusura dell'app fa rilasciare il blocco di file, come detto in WPF DocumentViewer doesn't release the XPS file, ma che non è un'opzione in questo scenario.
Questo mi ha catturato, ho un visualizzatore che scarica un documento, una volta impostato il documento non avrebbe funzionato neanche dopo aver applicato queste modifiche.Quando stavo caricando il documento stavo smaltendo il documento originale che avrebbe causato il fallimento del rilascio quando sono andato a ricaricare il documento. –