2017-01-08 1 views
-1

ich Visual Studio 2017 verwenden und ich habe eine RichTextBox, die keinen Text angezeigt wird, wenn ich es gesetzt:Visual Studio rich Box nicht angezeigt Text

public void ArduinoDataRecived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e) 
{ 
    SerialPort TempSerial = (SerialPort)sender; 
    ConsoleTextBox.AppendText(TempSerial.ReadLine()); 
} 

Der Code läuft ohne Fehler und wenn ich nenne MessageBox.Show(ConsoleTextBox.text) Es zeigt den Text an, den der serielle Port gesendet hat, und das Textfeld zeigt ihn nicht an.

Wenn ich eine völlig andere Methode habe, die den Text setzt, dann funktioniert es?

+0

Zeigen Sie den Code pls !!! –

Antwort

0

Wahrscheinlich ein Threading-Problem. Hier ist eine Copy-Paste aus the documentation:

Die DataReceived Ereignis wird auf einem sekundären Thread angehoben, wenn Daten aus dem Serialport-Objekt empfangen. Da dieses Ereignis auf einem sekundären Thread und nicht dem Hauptthread ausgelöst wird, kann das Versuchen, einige Elemente in dem Hauptthread wie UI-Elementen zu ändern, eine Thread-Ausnahme auslösen. Wenn es erforderlich ist, Elemente im Hauptformular oder -steuerelement zu ändern, senden Sie Änderungsanforderungen zurück mit Invoke, die die Arbeit an dem richtigen Thread tun.

P.S. Bevor Sie System.IO.Ports.SerialPort verwenden, vergewissern Sie sich, dass to read this. And this. Leider sind die Probleme in .NET 4.5.2 immer noch nicht behoben. Vor nicht allzu langer Zeit habe ich meinen seriellen Kommunikationscode von C# nach C++ portiert, damit meine Software zuverlässig für alle Benutzer funktioniert. Aber wenn es auf Ihrem Computer funktioniert und Sie nicht an einer kommerziellen Software arbeiten, könnte System.IO.Ports.SerialPort für Sie immer noch in Ordnung sein.