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
EventsBagpara 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
EventsBagenArchiveSaveOptions.
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
CreateEntriespara agregar archivos desde un directorio espec�fico. - Configure un
EventsBagpara 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
EventsBagincluido 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 }