Threadübergreifender Zugriff

Gast #1856028
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
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
Gast #1856073
Hallo,

Wie könnt ich Invoke an meinen Beispiel anwenden?
Bzw, wie ich die GUI Nicht Direkt ansteuern kann

Die Hilfen von Microsoft konnten mir auch ned wirklich helfen

Danke,
#1856178
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

Eine eigene Frage? Dieser Thread ist über 16 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.