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

FileSystemWatcher

Estas en el tema de FileSystemWatcher en el foro de .NET en Foros del Web. Buena tarde ... FileSystemWatcher al crear un archivo en la carpeta vigilada me reporta 2 veces la creacion del archivo, aun cuando solo fue uno ...
  #1 (permalink)  
Antiguo 30/09/2013, 16:15
 
Fecha de Ingreso: noviembre-2003
Mensajes: 209
Antigüedad: 18 años, 8 meses
Puntos: 0
FileSystemWatcher

Buena tarde ...

FileSystemWatcher al crear un archivo en la carpeta vigilada me reporta 2 veces la creacion del archivo, aun cuando solo fue uno el que se creo... ¿a alguien le ha pasado?, ¿como podria corregir esto?

Al probar paso por paso el codigo la subrutina fsw_crear se ejecuta 2 veces y no se porque.



Código vb:
Ver original
  1. Private Sub btnOn_Click(sender As System.Object, e As System.EventArgs) Handles btnOn.Click
  2.         Try
  3.  
  4.             If ValidarRuta() <> False Then
  5.                 btnDesactivar()
  6.                 FileSystemWatcher1.Path = tbRuta.Text
  7.                 'AddHandler FileSystemWatcher1.Changed, AddressOf fsw_cambiar
  8.                'AddHandler FileSystemWatcher1.Deleted, AddressOf fsw_borrar
  9.                AddHandler FileSystemWatcher1.Created, AddressOf fsw_crear
  10.                 'AddHandler FileSystemWatcher1.Renamed, AddressOf fsw_renombrar
  11.  
  12.                 FileSystemWatcher1.Filter = tbFiltro.Text
  13.                 FileSystemWatcher1.NotifyFilter = NotifyFilters.LastAccess Or NotifyFilters.Attributes Or _
  14.                NotifyFilters.CreationTime Or NotifyFilters.DirectoryName Or NotifyFilters.FileName _
  15.                Or NotifyFilters.LastWrite Or NotifyFilters.Security Or NotifyFilters.Size
  16.                 FileSystemWatcher1.EnableRaisingEvents = True
  17.  
  18.             End If
  19.  
  20.         Catch ex As Exception
  21.             MessageBox.Show(ex.Message, "Error")
  22.         End Try
  23.     End Sub
  24.  
  25.    
  26.     Private Sub fsw_crear(sender As Object, e As FileSystemEventArgs)
  27.         Try
  28.             lbxCambios.Items.Add("Archivo Creado: " & Convert.ToString(e.FullPath))
  29.             Exit Sub
  30.         Catch ex As Exception
  31.             MessageBox.Show(ex.Message, "Error")
  32.         End Try
  33.     End Sub


Muchas gracias
  #2 (permalink)  
Antiguo 01/10/2013, 13:58
 
Fecha de Ingreso: abril-2011
Mensajes: 1.342
Antigüedad: 11 años, 3 meses
Puntos: 344
Respuesta: FileSystemWatcher

El problema que puedes tener es que te estés suscribiendo al evento de creación cada vez que pulsas el botón de On.

No puedo saberlo a ciencia cierta porque no veo que código tienes para el botón de Off. En el botón de Off tendrías que eliminar ese evento para asegurarte de esto.

Código vb:
Ver original
  1. Private Sub btnOff_Click(sender As System.Object, e As System.EventArgs) Handles btnOff.Click
  2.         Try              
  3.                 RemoveHandler FileSystemWatcher1.Created, AddressOf fsw_crear  
  4.         Catch ex As Exception
  5.             MessageBox.Show(ex.Message, "Error")
  6.         End Try
  7.     End Sub
  8.  
  9. Private Sub btnOn_Click(sender As System.Object, e As System.EventArgs) Handles btnOn.Click
  10.         Try
  11.  
  12.             If ValidarRuta() <> False Then
  13.                 btnDesactivar()
  14.                 FileSystemWatcher1.Path = tbRuta.Text
  15.                 'AddHandler FileSystemWatcher1.Changed, AddressOf fsw_cambiar
  16.                'AddHandler FileSystemWatcher1.Deleted, AddressOf fsw_borrar
  17.                AddHandler FileSystemWatcher1.Created, AddressOf fsw_crear
  18.                 'AddHandler FileSystemWatcher1.Renamed, AddressOf fsw_renombrar
  19.  
  20.                 FileSystemWatcher1.Filter = tbFiltro.Text
  21.                 FileSystemWatcher1.NotifyFilter = NotifyFilters.LastAccess Or NotifyFilters.Attributes Or _
  22.                NotifyFilters.CreationTime Or NotifyFilters.DirectoryName Or NotifyFilters.FileName _
  23.                Or NotifyFilters.LastWrite Or NotifyFilters.Security Or NotifyFilters.Size
  24.                 FileSystemWatcher1.EnableRaisingEvents = True
  25.  
  26.             End If
  27.  
  28.         Catch ex As Exception
  29.             MessageBox.Show(ex.Message, "Error")
  30.         End Try
  31.     End Sub
  32.  
  33.    
  34.     Private Sub fsw_crear(sender As Object, e As FileSystemEventArgs)
  35.         Try
  36.             lbxCambios.Items.Add("Archivo Creado: " & Convert.ToString(e.FullPath))
  37.             Exit Sub
  38.         Catch ex As Exception
  39.             MessageBox.Show(ex.Message, "Error")
  40.         End Try
  41.     End Sub

Saludos.

Etiquetas: access
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 15:05.