Foros del Web » Programación para mayores de 30 ;) » .NET »

saber si un archivo está siendo ocupado

Estas en el tema de saber si un archivo está siendo ocupado en el foro de .NET en Foros del Web. Buenas, estoy con un problema en un sistema que estoy haciendo en VB.NET. El tema es que en el sistema tengo una funcionalidad que hace ...
  #1 (permalink)  
Antiguo 09/11/2009, 20:22
 
Fecha de Ingreso: noviembre-2008
Mensajes: 23
Antigüedad: 15 años, 6 meses
Puntos: 0
saber si un archivo está siendo ocupado

Buenas, estoy con un problema en un sistema que estoy haciendo en VB.NET. El tema es que en el sistema tengo una funcionalidad que hace un backup de una base de datos mysql (en mi código tengo la llamada a la función que me hace el backup, y a continuación, hago una llamada a otra función que toma este archivo generado .sql y lo comprime). Al principio cuando la base de datos era chica no había problemas, pero ahora que tiene muchos registros, cuando quiere comprimir, me dice que no se puede tener acceso al archivo porque está siendo utilizado por otro programa o proceso. Yo pienso que es porque tarda un poco en hacer el backup de tantos registros, y cuando quiere agarrar el archivo .sql para comprimirlo, todavía está siendo generado, entones lo que quisiera saber es si hay algún método o alguna forma de saber cuándo un archivo está ocupado, de forma de poder hacer un ciclo o algo con una barra de progreso para esperar a que se termine el backup y recién llamar al método de compresión. Espero haberme explicado bien
saludos
  #2 (permalink)  
Antiguo 10/11/2009, 13:15
Avatar de eledgarr  
Fecha de Ingreso: octubre-2008
Ubicación: La ciudad de la esperanza
Mensajes: 133
Antigüedad: 15 años, 6 meses
Puntos: 3
Respuesta: saber si un archivo está siendo ocupado

Bueno haber que te parece lo que planteo

Código:
Dim comprime As Integer 'bandera que indica si ya se comprimio el archivo 0:no , 1:si

comprime = 0 'no por defecto

While comprime = 0 'mientras no se haya comprimido el archivo
    Try
        'aqui deberia ir tu codigo para comprimir
        comprime = 1 'se ha comprimido
    Catch ex As Exception
        System.Threading.Thread.Sleep(5000) 'espera un poco
        comprime = 0 'no se ha comprimido el archivo (esta linea sobra ya que tiene ese valor por defecto)
    End Try

End While
__________________
Si te sirve lo que te escribo regalame un karma positivo
-----------------------------------------------------------------------
Estoy aqui no por que conozco mucho, estoy para ignorar menos

Última edición por eledgarr; 10/11/2009 a las 13:16 Razón: falto algo
  #3 (permalink)  
Antiguo 10/11/2009, 13:34
Avatar de Peterpay
Colaborador
 
Fecha de Ingreso: septiembre-2007
Ubicación: San Francisco, United States
Mensajes: 3.858
Antigüedad: 16 años, 8 meses
Puntos: 87
Respuesta: saber si un archivo está siendo ocupado

aunque es un poco rebuscada la solucion , eledgarr le dio al clavo porque es un problema de sincronizacion de tus 2 eventos.

ahora tendriamos que ver ese metodo de primero backup, para ver como se puede mejorar y agregar algun evento (Event y un Delegate) para que crear algo como

MiClaseDeBackup.Completed+=MiEvento(EventHandlerAu togenerado); y asi tu sabes que cuando se genere el completed en el eventhandler que se genere en el codigo que consumas sera mas eficiente y a prueba de error.
__________________
Curso WF4
http://cursos.gurudotnet.com/ DF
Aprende HTML5
  #4 (permalink)  
Antiguo 22/12/2009, 13:31
 
Fecha de Ingreso: noviembre-2008
Mensajes: 23
Antigüedad: 15 años, 6 meses
Puntos: 0
Respuesta: saber si un archivo está siendo ocupado

muchas gracias! recién veo la respuesta y no había probado más otras alternativas, me sirvió lo que posteó eledgard, más adelante veré si puedo modificar mi método para hacerlo un poco más eficiente, muchas gracias
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:32.