Annuler la création de l'archive ZIP
Il peut arriver que vous souhaitiez annuler la création d’une archive zip pour diverses raisons. Cela peut tout simplement prendre trop de temps ou vous n’avez pas réellement besoin de certaines entrées.
Aperçu
Il existe une classe EventsBag qui contient les événements liés aux archives. Désormais, il prend en charge un événement : EntryCompressed. Il se déclenche après la compression d’une entrée d’archive et peut être annulé.
Annulation de la création d’archives longues
Disons que vous souhaitez que votre archive ZIP soit composée en une minute environ. Une fois qu’une entrée a été compressée, vérifiez le temps écoulé depuis le début de la compression et si cela a pris plus d’une minute, annulez le processus. L’archive des résultats aurait déjà compressé les entrées, y compris celle qui a déclenché l’événement.
Étapes : pour annuler la création d’archives longues en C#</ fort>
- Initialisez un nouvel objet
Archive
pour gérer la compression. - Démarrez un chronomètre pour suivre la durée du processus de compression.
- Créez des entrées d’archive à partir d’un répertoire en utilisant la méthode
CreateEntries
, en spécifiant le dossier à compresser. - Configurez un
EventsBag
pour gérer les événements de compression. - Attachez un gestionnaire d’événements pour l’événement
EntryCompressed
, qui vérifie si le temps écoulé dépasse une minute et annule l’opération si nécessaire. - Démarrez le chronomètre et procédez à la sauvegarde de l’archive, en passant le
EventsBag
dans lesArchiveSaveOptions
.
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 }
Annulation après certaines entrées
Si vous souhaitez annuler après la compression d’une entrée particulière, utilisez l’extrait suivant :
Étapes : l’annulation de la création de l’archive après une entrée spécifique est compressé en C#
- Initialisez un nouvel objet
Archive
pour gérer la compression. - Utilisez la méthode
CreateEntries
pour ajouter des fichiers à partir d’un répertoire spécifié. - Configurez un
EventsBag
pour gérer les événements de compression. - Attachez un gestionnaire d’événements pour l’événement
EntryCompressed
, qui vérifie si l’entrée en cours de compression correspond à un nom de fichier spécifique (par exemple, “last.bin”). - Si l’entrée cible est trouvée, déclenchez l’annulation.
- Enregistrez l’archive avec le
EventsBag
inclus dansArchiveSaveOptions
.
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 }