Threadübergreifender Zugriff

Gast #1856028
Lesenswert?

Hallo an Alle,

Momentan hab ich ein Problem mit einem Thread.

Ich versuche Daten aus einer seriellen SChnittstelle auf einer Richbox 
auszugeben. Dies versuch ich mittels eines eigenen Backgroundworkers 
weil ansonsten mein Hauptprogram hängt.

Doch sobald ich den Backgroundworker aktiviere fängt der 
Backgroundworker an Daten einzulesen, jedoch reagiert c# mit der 
Fehlermeldung:

Ungültiger Threadübergreifender Vorgang

Hat vll jemand eine Lösung wie ich die Daten im Backgroundworker 
einlesen kann und anschließen in einer RichTextBox im Hauptprogram 
ausgeben kann?

Hier noch mein Coding:

private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
        {
            //-------------Öffnen der seriellen 
Schnittstelle-------------
            MessageBox.Show("Offen");
            PortSeriell.Open();

            if (a == 1)
            {
                backgroundWorker1.WorkerSupportsCancellation = true;
            }

            txtStreamAusgabe.Text += PortSeriell.ReadLine();


            //-----------Schließen der seriellen 
Schnittstelle------------




        }

Danke schon mal im voraus!
Gast #1856040
Lesenswert?

Hallo,

Das mit Invoke hab ich schon versucht, nur leider komm ich damit nicht 
so recht zurecht, bin noch nicht so fortgeschritten im Programmieren.

Hab mit Invoke schon herumgebastel aber leider keine erkenntniss daraus 
gewonnen.

Danke
#1856178
Lesenswert?

Und falls du es immer noch nicht verstanden hast.
Du darfst das hier

txtStreamAusgabe.Text += PortSeriell.ReadLine();

nicht tun, sondern du musst dir eine Funktion (einen Delegate) machen, 
der dieses Anhängen für dich erledigt. Diese Funktion rufst du dann über 
Invoke auf und gibts ihr den anzuhängenden Text mit.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren