Va beh lasciamo stare la stesura del codice che è stata fatta in fretta per provare, comunque mettiamola così, devo ricevere una stringa tramite seriale, non ho possibilità di vedere quando è stata ricevuta tutta perchè non mi risulta che la classe serialport abbia un evento che gestisca questa cosa e in generale non posso sapere quando ricevo o non ricevo dati, quindi mi sono inventato una cosa del genere:

codice:
Private Sub ricevi(ByVal str As String)

_string += str

Progress(_string.Length,prova1)

End Sub
questo metodo viene chiamato dall'evento data_received della serialport