Hola amigos,
Por fin estoy terminando por fin mi primera aplicación programada íntegramente en Visual basic .NET en parte gracias a vuestra ayuda

Miles de gracias a todos los que me habéis ayudado de una u otra forma.
Os cuento cómo está organizada: tengo 2 hilos, uno que debe leer CONTINUAMENTE de una base de datos y otro que debe actualizar esa base de datos cada 5 segundos. Tengo cuatro botones, dos para iniciar cada uno de ellos y los otros dos para pararlos respectivamente.
El hilo que actualiza la base de datos hace su trabajo correctamente por fin, pero el que lo debe leer continuamente me da más problemas. O bien se bloquea el PC (es muy potente y la base de datos apenas ocupa 100 KB) o bien me saltan continuamente avisos (hasta 300 en pocos segundos) con el mensaje "Error no especificado".
He probado a poner a dormir el que lee 1 segundo o dos y en ese caso ya no se bloquea ni satura el PC pero sin embargo no actualiza correctamente la base de datos...
¿Qué podría hacer para que se me ejecute el hilo continuamente sin saturar el PC? y sin que el hilo que actualiza interfiera con el que sólo lee?
Gracias
Ejemplo de código
Código:
Private Sub BLeerBD_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BLeerBD.Click
ThreadLeerBD = New System.Threading.Thread(AddressOf Me.EjecutaHiloBD)
actualizaLeerBD(ThreadLeerBD)
compruebaHiloLeerActivo(ThreadLeerBD)
End Sub
Private Sub BStopLeer_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BStopLeer.Click
bandera1 = True
MessageBox.Show("Botón STOP Pulsado (Leer)", "Aviso")
End Sub
Public Sub actualizaLeerBD(ByVal ThreadLeerBD As System.Threading.Thread)
System.Windows.Forms.Application.DoEvents()
If ThreadLeerBD.IsAlive = True Then
ThreadLeerBD.Start()
ThreadLeerBD.IsBackground = True
Else
ThreadLeerBD = New System.Threading.Thread(AddressOf Me.EjecutaHiloBD)
ThreadLeerBD.Start()
ThreadLeerBD.IsBackground = True
End If
End Sub
Public Sub compruebaHiloLeerActivo(ByVal ThreadLeerBD As System.Threading.Thread)
While bandera1 = False
System.Windows.Forms.Application.DoEvents()
ThreadLeerBD.Sleep(1000)
actualizaLeerBD(ThreadLeerBD)
End While
End Sub