Grazie della risposta vi spiego in breve che succede:
il programma è collegato ad una periferica esterna tramite seriale, acquisisce i dati e rimane sempre in ascolto(questo perchè non ho trovato una funziona che mi indichi la fine o la pausa di una ricezione), quando riceve un certo dato va a controllare su un file tipo xml, che viene utilizzato come database, se è presente, se lo è e c'è un altra condizione dovrebbe mostrare la finestra per inserire un valore tramite textbox che poi verrà scritto nel db.
Un esempio potrebbe essere questo:
codice:
Classe form principale
'riceve il dato dalla periferica
private sub ricevi(ByVal str As String)
'questo è il modo che mi sono inventato per sapere che la ricezione del dato è terminata
if str.length = 22 Then
Dim db As New Database
db.check(str)
End if
'di seguito vengono eseguiti altri controlli all'interno di questa sub
..
....
.....
.......
End Sub
_____________________
Classe database
public sub check(ByVal str As String)
if node.childnode ...... = str Then
Else
'se faccio così mi compare la finestra ma mi appare bianca, quindi bloccata
Add.Show()
'se faccio così mi appare come detto per un secondo poi scompare
Dim thread As New System.Threading.Thread(AddressOf Add.Show)
thread.Start()
End If
End Sub
Il fatto che si blocca la finestra mi fa proprio pensare che ci sia bisogno di multithreading perchè evidentemente non essendo finita la sub ricevi il programma si pianta