Se intendi qualcosa del genere:
codice:
Private Sub Timer1_Tick() Handles Timer1.Tick
obj.Read(N byte) //--> if no data come within 500ms close the thread
End Sub
ogni 100ms il programma verifica l' IF del tuo codice, non ho la possibilità di provare ma per la mia poca esperienza credo che non vada tanto bene...
Penso che dovresti gestire i 500ms direttamente con il Timer "giocandoci" con Start e Stop, tipo:
codice:
Private Sub avvio_acquisione() Handles Button1.Click
acquisizione()
End Sub
Private Sub acquisizione()
'qui il tuo codice
Timer1.Start()
End Sub
Private Sub Timer1_Tick() Handles Timer1.Tick
Timer1.Stop()
If acquisizione_dati = True Then
'qui devi attendere la fine dei dati, qualcosa tipo WaitForExit
acquisizione()
Else
' qui devi chiudere il thread
acquisizione()
End If
End Sub
Devi anche aggiungere del codice per fermare definitivamente il timer.
Comunque la mia è solo un' idea dettata dal quel che conosco, ti conviene aspettare qualcuno più esperto...