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
Archivepour 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
EventsBagpour 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
EventsBagdans 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
Archivepour g�rer la compression. - Utilisez la m�thode
CreateEntriespour ajouter des fichiers � partir d’un r�pertoire sp�cifi�. - Configurez un
EventsBagpour 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
EventsBaginclus 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 }