Hallo zusammen,
ich versende in c# CAN Nachrichten und empfange diese. Durch eine UserForm steuere ich das Ganze und dies funktioniert auch ganz gut.
Jetzt möchte ich allerdings bei einer empfangenen CAN NAchricht den Wert in die Textbox meiner Userform anzeigen lassen. Dann kommt folgender Fehler:
Cross-thread operation not valid: Control ‚Textbox1‘ accessed from a thread other than the thread it was created on.
Habe im Netz gelesen, dass ich aus einem thread nicht auf ein weiteres zugreifen kann. Bei mir ist die UserForm ein Thread und das empfangen der CAN Nachricht ein weiterer Thread.
Im Netz habe ich ebenfalls gelesen, dass ich die Textbox aus dem ersten Thread in der zweiten zunächst aktivieren muss, bevor ich diesen nutzen kann.
Hier mein bisher geschriebener code dazu:
public void RXThread()
{
…
…
// hier speichere ich die empfangene CAN NAchricht in ein array
byte[] rxdata = new byte[8];
rxdata = receivedEvent.tagData.can_Msg.data;
if (TextboxHiLValue.InvokeRequired)
{
// in die Textbox soll das erste byte angezeigt werden, also rxdata[0]
Invoke(TextboxHiLValue, Convert.ToString(rxdata[0]) });
}
else
{
TextboxHiLValue.Text = Convert.ToString(rxdata[0]);
}
}
Mache ich das richtig?? Für jegliche Tipps wäre ich sehr dankbar…
Viele Grüße
Marcela