Pracuję nad aplikacją WPF, która otwiera i wyświetla dokumenty XPS. Po zamknięciu aplikacji specyfikacja jest aplikacją, która powinna usunąć otwarty dokument XPS w celu oczyszczenia. Jednak podczas otwierania określonego dokumentu XPS aplikacja zgłasza wyjątek, że plik jest nadal używany, gdy próbuje go usunąć. Jest to trochę dziwne, ponieważ dzieje się tak tylko podczas otwierania konkretnego dokumentu XPS i tylko wtedy, gdy przeniosłeś się poza pierwszą stronę.Program Document Viewer WPF nie zwalnia pliku XPS
Niektóre kody które stosowane są przedstawione poniżej:
celu otwarcia XPS dokument:
DocumentViewer m_documentViewer = new DocumentViewer();
XpsDocument m_xpsDocument = new XpsDocument(xpsfilename, fileaccess);
m_documentViewer.Document = m_xpsDocument.GetFixedDocumentSequence();
m_xpsDocument.Close();
Do poruszania dokument XPS:
m_documentViewer.FirstPage();
m_documentViewer.LastPage();
m_documentViewer.PreviousPage();
m_documentViewer.NextPage();
Do zamykania obiektów DocumentViewer i usunięcie pliku:
m_documentViewer.Document = null;
m_documentViewer = null;
File.Delete(xpsfilename);
Wszystko to jest dość proste i działa z innymi testowanymi przez nas dokumentami. Ale w przypadku konkretnego dokumentu XPS pojawia się wyjątek, że plik, który ma zostać usunięty, wciąż jest używany.
Czy coś jest nie tak lub brakuje mi kodu?
Dzięki!
Hej, ten działał! Właśnie opuściłem obiekt XpsDocument otwarty i tylko wywoływany XpsDocument.Close() podczas wyjścia i byłem w stanie usunąć plik. Dzięki moogs! –
Działa to tylko wtedy, gdy możesz zamknąć aplikację, aby zwolnić blokadę. Jeśli potrzebujesz blokady zwolnionej, gdy twoja aplikacja pozostaje otwarta, musisz zobaczyć moją odpowiedź poniżej lub w http://stackoverflow.com/questions/1442607/how-do-i-get-wpfs-documentviewer-to-release-its -file-lock-on-the-source-xps-docu –