Brechen Sie die Erstellung des ZIP-Archivs ab
Es kann aus verschiedenen Gründen vorkommen, dass Sie die Erstellung eines Zip-Archivs abbrechen möchten. Es kann einfach zu lange dauern oder Sie benötigen dort einige Einträge gar nicht.
Überblick
Es gibt eine Klasse EventsBag, die als Container für archivbezogene Ereignisse dient. Jetzt unterstützt es ein Ereignis – EntryCompressed. Es wird ausgelöst, nachdem ein Archiveintrag komprimiert wurde, und kann abgebrochen werden.
Erstellung eines langen Archivs abbrechen
Nehmen wir an, Sie möchten, dass Ihr ZIP-Archiv in etwa einer Minute erstellt wird. Überprüfen Sie nach der Komprimierung eines Eintrags die Zeit, die seit Beginn der Komprimierung verstrichen ist. Wenn die Komprimierung länger als eine Minute gedauert hat, brechen Sie den Vorgang ab. Das Ergebnisarchiv hätte bereits komprimierte Einträge enthalten, einschließlich desjenigen, der das Ereignis ausgelöst hat.
Schritte: Zum Abbrechen der Erstellung langer Archive in C#</ stark>
- Initialisieren Sie ein neues „Archive“-Objekt, um die Komprimierung durchzuführen.
- Starten Sie eine Stoppuhr, um die Dauer des Komprimierungsprozesses zu verfolgen.
- Erstellen Sie Archiveinträge aus einem Verzeichnis mit der Methode „CreateEntries“ und geben Sie dabei den zu komprimierenden Ordner an.
- Richten Sie einen „EventsBag“ ein, um Komprimierungsereignisse zu verarbeiten.
- Hängen Sie einen Ereignishandler für das Ereignis „EntryCompressed“ an, der prüft, ob die verstrichene Zeit eine Minute überschreitet, und den Vorgang bei Bedarf abbricht.
- Starten Sie die Stoppuhr und fahren Sie mit dem Speichern des Archivs fort, indem Sie den „EventsBag“ in den „ArchiveSaveOptions“ übergeben.
1 using (var archive = new Archive())
2 {
3 Stopwatch sw = new Stopwatch();
4
5 archive.CreateEntries(@"D:\BigFolder");
6 EventsBag eb = new EventsBag();
7 eb.EntryCompressed += delegate(object sender, CancelEntryEventArgs args)
8 {
9 if (sw.Elapsed > TimeSpan.FromSeconds(60))
10 args.Cancel = true;
11 };
12 sw.Start();
13 archive.Save("output.zip", new ArchiveSaveOptions() { EventsBag = eb });
14 }
Stornierung nach bestimmtem Eintrag
Wenn Sie den Vorgang abbrechen möchten, nachdem ein bestimmter Eintrag komprimiert wurde, verwenden Sie den folgenden Codeausschnitt:
Schritte: Abbrechen der Archiverstellung nach einem bestimmten Eintrag komprimiert in C#
- Initialisieren Sie ein neues „Archive“-Objekt, um die Komprimierung durchzuführen.
- Verwenden Sie die Methode „CreateEntries“, um Dateien aus einem angegebenen Verzeichnis hinzuzufügen.
- Richten Sie einen „EventsBag“ ein, um Komprimierungsereignisse zu verwalten.
- Hängen Sie einen Ereignishandler für das Ereignis „EntryCompressed“ an, der prüft, ob der zu komprimierende Eintrag mit einem bestimmten Dateinamen übereinstimmt (z. B. „last.bin“).
- Wenn der Zieleintrag gefunden wird, lösen Sie den Abbruch aus.
- Speichern Sie das Archiv mit der „EventsBag“, die in den „ArchiveSaveOptions“ enthalten ist.
1 using (var archive = new Archive())
2 {
3 archive.CreateEntries(@"D:\BigFolder");
4 EventsBag eb = new EventsBag();
5 eb.EntryCompressed += delegate(object sender, CancelEntryEventArgs args)
6 {
7 if (args.Entry.Name == @"BigFolder\last.bin")
8 args.Cancel = true;
9 };
10 archive.Save("output.zip", new ArchiveSaveOptions() { EventsBag = eb });
11 }