Cancelar la creación del archivo ZIP
Puede suceder que desee cancelar la creación del archivo zip por varios motivos. Puede que lleve demasiado tiempo o que en realidad no necesites algunas entradas allí.
Descripción general
Hay una clase EventsBag que es un contenedor para eventos relacionados con el archivo. Ahora admite un evento: EntryCompressed. Aparece después de que se ha comprimido una entrada del archivo y se puede cancelar.
Cancelar la creación de un archivo largo
Digamos que desea que su archivo ZIP esté compuesto en aproximadamente un minuto. Después de comprimir alguna entrada, verifique el tiempo transcurrido desde el inicio de la compresión y, si tomó más de un minuto, cancele el proceso. El archivo de resultados ya habría comprimido las entradas, incluida la que desencadenó el evento.
Pasos: para cancelar la creación de archivos largos en C#</ fuerte>
- Inicialice un nuevo objeto “Archivo” para manejar la compresión.
- Inicie un cronómetro para realizar un seguimiento de la duración del proceso de compresión.
- Cree entradas de archivo desde un directorio utilizando el método
CreateEntries
, especificando la carpeta a comprimir. - Configure un
EventsBag
para manejar eventos de compresión. - Adjunte un controlador de eventos para el evento
EntryCompressed
, que verifica si el tiempo transcurrido excede un minuto y cancela la operación si es necesario. - Inicie el cronómetro y continúe guardando el archivo, pasando
EventsBag
enArchiveSaveOptions
.
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 }
Cancelando después de cierta entrada
Si desea cancelar después de que se haya comprimido una entrada en particular, utilice el siguiente fragmento:
Pasos: cancelar la creación del archivo después de una entrada específica es comprimido en C#
- Inicialice un nuevo objeto “Archivo” para manejar la compresión.
- Utilice el método
CreateEntries
para agregar archivos desde un directorio específico. - Configure un
EventsBag
para gestionar eventos de compresión. - Adjunte un controlador de eventos para el evento
EntryCompressed
, que verifica si la entrada que se está comprimiendo coincide con un nombre de archivo específico (por ejemplo, “last.bin”). - Si se encuentra la entrada de destino, active la cancelación.
- Guarde el archivo con el
EventsBag
incluido enArchiveSaveOptions
.
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 }