Ich versuche, PDF-Datei mit PDFTron in Anwendung, die in der UWP-Umgebung läuft erstellen. Ich kann eine Datei erfolgreich erstellen. Je nach Benutzereingabe muss die neu erstellte Datei möglicherweise umbenannt oder vollständig aus dem System gelöscht werden. Obwohl, wenn ich versuche, die Datei zuzugreifen, die nur das System erstellt wurden, wirft die folgende Ausnahme:Erstellen Sie eine PDF-Datei mit PDFTron und dann umbenennen oder löschen
Exception thrown: 'System.IO.IOException' in System.IO.FileSystem.dll The process cannot access the file (filename) because it is being used by another process.
Den folgenden Teil zeigen, was für die Datei verwendet wird, erstellt werden:
await sdfDoc.SaveAsync(filePath, SDFDocSaveOptions.e_linearized, "%PDF-1.5");
sdfDoc.Dispose();
Und das ist meine löschen Umsetzung:
var filedelete = Task.Run(() => File.Delete(filePath));
die Erstellung der Datei auf einem separaten Task läuft und die Löschung erfolgt auf Tastendruck.
Ich verstehe die Art der Ausnahme, obwohl ich mich fragte, ob die Ressourcen der Datei von PDFTron nach der Erstellung der Datei an das System zurückgegeben werden?
Jede Hilfe oder Richtung würde sehr geschätzt werden.
Vielen Dank.
1) Können Sie zeigen, wie Sie das PDFDoc-Objekt instanziieren? Übergeben Sie eine StorageFile? 2) Welcher Dateityp ist filePath in Ihrem Aufruf von SaveAsync? 3) Wird das PDFDoc-Objekt zur Anzeige an PDFViewCtrl übergeben? 4) Warum ist das Umbenennen/Löschen einer Datei wichtig für Sie? – Ryan
Vielen Dank für die Antwort Ryan: 1) Für die Instantiierung verwende ich - PDFDoc pdfdoc = new PDFDoc(); und SDFDoc sdfDoc = pdfdoc.GetSDFDoc(); 2) Ich verwende keine Speicherdatei für den Zugriff auf die Datei, nur den filePath, der eine Zeichenfolge ist, die auf den Pfad verweist, in dem die Datei derzeit gespeichert ist. Diese Zeichenfolge wird als Parameter an SaveAsync übergeben. 3) Die erstellte PDF wird nicht an die PDFViewCtrl übergeben. 4) Der Benutzer definiert den Dateinamen der erstellten PDF und sie müssen im Fehlerfall möglicherweise umbenannt oder gelöscht werden. – Illusioner
Da Sie eine Zeichenfolge übergeben, ist der Dateipfad im App-eigenen Speicher? Außerdem können Sie die Ausgabe von PDFNet.GetVersion zur Laufzeit veröffentlichen. – Ryan