Sto lavorando a un'applicazione WPF che apre e visualizza i documenti XPS. Quando l'applicazione si chiude, la specifica è che l'applicazione dovrebbe eliminare il documento XPS aperto per la pulizia. Tuttavia, quando si apre un determinato documento XPS, l'applicazione genera un'eccezione che il file è ancora in uso quando tenta di eliminarlo. È un po 'strano perché accade solo quando si apre un particolare documento XPS e solo quando si è passati oltre la prima pagina.DocumentViewer WPF non rilascia il file XPS
Alcuni dei codici che ho usato sono mostrati di seguito:
Per aprire il documento XPS:
DocumentViewer m_documentViewer = new DocumentViewer();
XpsDocument m_xpsDocument = new XpsDocument(xpsfilename, fileaccess);
m_documentViewer.Document = m_xpsDocument.GetFixedDocumentSequence();
m_xpsDocument.Close();
Per muovere il documento XPS:
m_documentViewer.FirstPage();
m_documentViewer.LastPage();
m_documentViewer.PreviousPage();
m_documentViewer.NextPage();
Per chiudere l'oggetto DocumentViewer e cancellazione del file:
m_documentViewer.Document = null;
m_documentViewer = null;
File.Delete(xpsfilename);
È tutto piuttosto semplice e funziona con gli altri documenti che abbiamo testato. Ma con il particolare documento XPS, si apre un'eccezione che dice che il file da eliminare è ancora in uso.
C'è qualcosa di sbagliato o mancante nel mio codice?
Grazie!
Ehi, questo ha funzionato! Ho appena lasciato aperto l'oggetto XpsDocument e ho chiamato XpsDocument.Close() solo durante l'uscita e sono stato in grado di eliminare il file. Grazie moog! –
Funziona solo se è possibile chiudere l'applicazione per sbloccare il blocco. Se è necessario il blocco rilasciato mentre l'applicazione rimane aperta, è necessario consultare la mia risposta qui sotto o su http://stackoverflow.com/questions/1442607/how-do-i-get-wpfs-documentviewer-to-release-its -file-lock-on-the-source-xps-docu –