Ich habe eine "Arbeitsliste Stil" -Anwendung, wo der Benutzer eine Zip-Datei aus einer Liste auswählt und dann auf eine Schaltfläche klickt, um es in einen lokalen Ordner zu entpacken. HierKann dieselbe Datei nicht zweimal entpacken?
ist ein Auszug aus dem Code verwendet:
ZipFile zip = Ionic.Zip.ZipFile.Read(sourcePackage);
zip.ExtractAll(destination);
zip.Dispose();
Alles funktioniert gut das erste Mal, aber wenn der Benutzer wieder die gleiche Datei zu entpacken versucht (auch nach ein paar anderen unzipping), es geht zu schnell und alles, was im Zielordner erstellt wird, sieht wie eine temporäre Datei aus (zB 'x2hiex0z.pj0').
Es ist, als ob Ionic.Zip.ZipFile.Read einen Cache von zuvor entpackten Dateinamen erstellt.
Wenn ja, wie lösche ich es, damit ich es zwingen kann, die Datei erneut zu entpacken?
als eine Randnotiz, wenn einige Ihr Code beinhaltet ein 'IDisposable' wie 'ZipFile', es ist die beste Vorgehensweise, eine' using' Klausel zu verwenden. (Und wenn das Ende des Verwendungsblocks erreicht ist, wird automatisch Dispose() für Sie aufgerufen) – Pac0
Wenn Sie Ihre Anwendung debuggen, gibt es dann eine Ausnahme, wie in einer Antwort unten vorgeschlagen? Wenn ja, bitte geben Sie die Fehlermeldung an. – Pac0
Ich bekomme eine Ausnahme "Diese Operation wurde bereits OperationCompleted aufgerufen und weitere Aufrufe sind illegal.". Also muss ich nur klären, was das alles speichert. –