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.