Título: [SOLUCIONADO] ¿Como se puede cancelar una operación de FileCopy? Publicado por: Eleкtro en 19 Marzo 2013, 14:28 pm Si creo una aplicación y uso los metodos de "IO" o por ejemplo "My.Computer.FileSystem.CopyFile" para copiar un archivo de 50 GB, y cierro la aplicación, la operación de copiado reside en segundo plano y no se detiene hasta que el archivo haya sido copiado, así que parece ser que Windows es quien decide esto...
Mi pregunta es: ¿Se puede cancelar una operación de copiado? y: ¿Se puede hacer de alguna manera segura? (no me gustaría que se corrompieran los datos del disco duro, o algo parecido) No encuentro info en ningún lado un saludo! Título: Re: ¿Como se puede cancelar una operación de FileCopy? Publicado por: diegoCmC en 20 Marzo 2013, 16:34 pm Aquí te lo explican bien, tienes que copiar el archivo por trozos, y entre la copia de cada trozo compruebas si se ha cancelado la operación o no
http://stackoverflow.com/questions/7680640/how-to-copy-a-file-with-the-ability-to-cancel-the-copy (http://stackoverflow.com/questions/7680640/how-to-copy-a-file-with-the-ability-to-cancel-the-copy) Título: Re: ¿Como se puede cancelar una operación de FileCopy? Publicado por: Eleкtro en 20 Marzo 2013, 16:40 pm @diegoCmC
Muchísimas gracias, ni se me habría ocurrido. Saludos! Estoy intentando seguir el ejemplo de ese link, intento copiar un archivo de texto de pocas líneas, pero el archivo copiado siempre queda vacío (0 bytes) ¿Que estoy hciendo mal? Código
Título: Re: ¿Como se puede cancelar una operación de FileCopy? Publicado por: Eleкtro en 23 Marzo 2013, 14:42 pm ¿Alguien me puede explicar que estoy haciendo mal?
He usado los breakpoints y parece que todo está en orden, pero siempre obtengo un archivo de 0 Bytes. PD: No hay errores/excepciones, nada extraño y me aseguro de cerrar el flujo para que los datos se escriban, pero parece que no se escriben. Código
Este es la conversión del código de arriba que una persona me ha proporcionado convertido a C#, este código funciona perféctamente a diferencia del de arriba, no entiendo porque, y es lo que estoy tratando de averiguar: Código
Título: Re: ¿Como se puede cancelar una operación de FileCopy? Publicado por: $Edu$ en 23 Marzo 2013, 18:00 pm Voy a tirar algo por tirar, total nadie te ha ayudado por ahora, por lo menos intentare:
Fijate esto: Dim buffer = New Byte(1025) {} Dim bytesRead As Integer = 0 While (bytesRead = inputStream.Read(buffer, 0, buffer.Length)) > 0 Ahi buffer.length es igual a 1026, por lo menos en vb6. Y en C#: byte[] buffer = new byte[1025]; int bytesRead = 0; while ((bytesRead = inputStream.Read(buffer, 0, buffer.Length)) > 0) Ahi vale 1025, como tiene que ser. Por eso tal vez no te funciona, tendrias que cambiar en el codigo de vb.net a Dim buffer = New Byte(1024) {} Por lo menos es lo que creo que puede ser, tiene pinta de ser error de eso, que pasa siempre en los cambios de vb.net a C# Título: Re: ¿Como se puede cancelar una operación de FileCopy? Publicado por: Eleкtro en 23 Marzo 2013, 21:22 pm Hola $Edu$, gracias por ayudar
No creo que eso séa el error, porque el tamaño del buffer debería poder ser el que yo quisiera, como si quiero que séa de 1 sólo byte, ya que es el tamaño temporal de cada trozo xD. De todas formas ya probé a cambiarlo poniendo: 1023, 1024, 1025, 1026, y otros números, pero nada... Una persona me ha comentado que el error es que en VB.NET no se puede hacer asignación en un bucle: Código: While (bytesRead = inputStream.Read(buffer, 0, buffer.Length)) > 0 Creo que debe ser eso, intentaré buscar otra forma de asignar el valor. Saludos Título: Re: ¿Como se puede cancelar una operación de FileCopy? Publicado por: HdM en 23 Marzo 2013, 21:29 pm Hola.
El problema es ése, se están comparando los valores, no asignando. Prueba con: Código
Saludos. Título: Re: ¿Como se puede cancelar una operación de FileCopy? Publicado por: $Edu$ en 23 Marzo 2013, 21:34 pm Nunca he usado esto, solo he manejado archivos de texto con C# que es mas facil usando StreamWrite, pero pense que podria ser eso, ya que siempre veo que todos ponen 1024 o 2048 o 4096 como tamaño y pensaba que habia que hacerlo asi si o si jeje.
Alguien me explica por que usan esos numeros? por que no 1057? Título: Re: ¿Como se puede cancelar una operación de FileCopy? Publicado por: Eleкtro en 23 Marzo 2013, 22:32 pm Hola. El problema es ése, se están comparando los valores, no asignando. Prueba con... Genial, muchísimas gracias. |