Hallo Leute!
Ich habe folgendes Problem: Ich habe einen Funkscanner, mit dem ich mich über die serielle Schnittstelle unterhalte(unterhalten möchte). Um die Sache universell zu gestalten habe ich mir eine eigene Klasse dafür geschrieben, welche ein Ereignis auslöst, wenn der Scanner Daten liefert. Hier einige Codefragmente der Klasse:
class Scanner
Public Event receiveData(ByVal sData As String)
Dim WithEvents comTemp As New System.IO.Ports.Serialport
…
Private Sub getData(…) Handles comTemp.DataReceived
RaiseEvent receiveData(comTemp.ReadLine)
End Sub
End Class
Jetzt einige Fragmente meiner eigentlichen Anwendung:
dim myScanner as New Scanner
…
Private Sub receiveData(ByVal sData As String) Handles myScanner.receiveData
MessageBox.Show(sData) ’ funktioniert
Me.TextBox.Text=sData ’ funktioniert NICHT
End Sub
Hier taucht das Problem auf: Wenn ich die Daten per Messagebox ausgebe, dann funktioniert es einwandfrei, allerdings nicht, wenn ich den Inhalt eines Steuerelementes (in diesem Fall die Textbox) mit dem eingelesenen Inhalt füllen möchte. Ich erhalte folgende Fehlermeldung:
Cross-thread operation not valid: Control ‚TextBox1‘ accessed from a thread other than the thread it was created on
An den BackgroundWorker hab ich schon gedacht, ist aber nicht das Richtige für mit, da ich ja nicht weiß, wann das Einlesen des Scanners passiert…
Vielleicht kennt ja jemand dieses Problem und kann mir hier weiterhelfen… Wäre mit wirklich sehr geholfen!
Gruß aus OÖ, Alfred