Après avoir affiché un fichier XPS dans le document WPF DocumentViewer et fermé l'instance DocumentViewer, le fichier XPS est verrouillé et je ne peux pas le supprimer. J'ai besoin de libérer le verrou sur le fichier XPS afin que je puisse le supprimer, en écrire un autre avec le même nom, et éventuellement afficher ce nouveau fichier XPS dans une nouvelle instance de DocumentViewer. Je dois le faire dans la même instance d'application - sans avoir à fermer l'application (ceci est un scénario Aperçu avant impression). En d'autres termes, comment obtenir le code suivant à exécuter sans déclencher une exception à la "File.Delete (tempXpsFile);" déclaration?Comment faire pour que DocumentViewer de WPF libère son verrou de fichier sur le document XPS source?
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();
Fermeture de l'application ne libère le verrou de fichier, comme mentionné dans WPF DocumentViewer doesn't release the XPS file, mais ce n'est pas une option dans ce scénario.
Celui-ci m'a attrapé, j'ai un téléspectateur qui télécharge un document, une fois qu'il était en train de régler le document, il échouerait même après avoir appliqué ces changements.Lorsque je chargeais le document, je disposais le document original, ce qui provoquait l'échec de la publication lorsque je suis allé recharger le document. –