Ver Mensaje Individual
  #5 (permalink)  
Antiguo 05/10/2005, 23:46
Avatar de Jose_minglein2
Jose_minglein2
 
Fecha de Ingreso: noviembre-2004
Mensajes: 2.344
Antigüedad: 19 años, 6 meses
Puntos: 8
Al mismo método si que llaman, pero el problema viene dado por lo siguiente, dicho método, llama a otro timer, entonces, si llamo al método desde el hilo, cuando ejecuta el timer2.start y continua su ejecución, al finalizar el hilo, el timer ya no continua, supongo que es porque "muere su padre". Pongo un ejemplo del code que tenía y de como lo he resuelto:

Código:
Private Sub EsperarMoneda()
        Hilo_Puerto = New Threading.Thread(AddressOf LeerPuerto)
        Hilo_Puerto.Start()
         .......
End Sub

Private Sub LeerPuerto()
If Puerto_Serie.Read()
ObtenerDatos()
End If
End Sub
Private sub ObtenerDatos
 Dim frm_datos As New F_Datos()
 frm_datos.ShowDialog()
 Tmp.Start()
end sub
Bien aquí el EsperarMoneda() llama a un subproceso (LeerPuerto), que lo que hace es quedar a la escucha del puerto serie, pero sin interrumpir al programa principal, así el usuario puede seguir con la aplicación.
Cuando el puerto serie recibe los datos que requiere, se abre un dialogo para introducir ciertos datos, y al cerrar éste debe comenzar un timer que controla la inactividad.
Pues bien, de ésta forma, tras el Tmp.Start(), finaliza la ejecución del Hilo, y ya no haces ticks.

Por lo que lo soluciono de la siguiente manera:
Código:
Dim variable as boolean = false

Private Sub EsperarMoneda()
        Hilo_Puerto = New Threading.Thread(AddressOf LeerPuerto)
        Hilo_Puerto.Start()
         .......
        Timer_Comprobar.Start()
End Sub

Private Sub LeerPuerto()
If Puerto_Serie.Read()
variable = true
End If
End Sub
Private sub ObtenerDatos
 Dim frm_datos As New F_Datos()
 frm_datos.ShowDialog()
 Tmp.Start()
end sub
private Sub Timer_Comprobar_Tick(...) handles Timer_Comprobar.Tick
    If label1.Visible = False     ' Pongo un mensaje Intermitente
        label1.Visible = True
     else
        label1.Visible = False
     End If
     If variable = true
         Timer_Comprobar.Stop()
         ObtenerDatos()
      end if
end sub

También lo intente con manejadores (AddHandles y eso), pero me sucedía lo mismo. Asi que no se si será la mejor solución, pero si que funciona.