Entwickler-Ecke

WinForms - Textbox und threads


Trautmann - Sa 28.03.09 10:27
Titel: Textbox und threads
Hallo,

ich schreib grad an meinem ersten C#-Projekt und hab ein kleines Problem:
Mein Programm besteht aus einem form mit einer Textbox und einem Button.
Der User soll einen Wert in die Textbox eingeben und dann auf den Button klicken. Dadurch wird dann ein backgroundworker gestartet der eine Berechnung ausführt. Wenn ich jetzt aber das Ergebnis wieder in der Textbox ausgeben will bekomme ich folgende Fehlermeldung:
Zitat:
Ungültiger threadübergreifender Vorgang: Der Zugriff auf das Steuerelement textBox1 erfolgte von einem anderen Thread als dem Thread, für den es erstellt wurde.

Ich hab probiert ein Event zu schreiben, welches dann die Textbox anspricht aber ich bekommen den selber Error.
Wie kann ich die Textbox im anderem Thread aus dem backroundworker heraus ansprechen?
Benutze 3.5er Framework.

danke schon jetzt

mfg

Trautmann


JüTho - Sa 28.03.09 11:05

Raten, raten, raten. Wo ist bloß meine Glaskugel geblieben, die mir deinen Code erklären kann?

In der SDK-Doku/MSDN gibt es bei BackgroundWorker ein Beispiel, das auch zeigt, wie Werte im RunWorkerCompleted-Ereignis in ein GUI-Element eingetragen werden.

Jürgen


Trautmann - Sa 28.03.09 11:50

Hi,

danke für deine Antwort.
Das RunWorkerCompleted ist ja nur für das Ende des Backgroundworkers gedacht.(oder kann man das öfter aufrufen?) Ich will aber, das mein Backgroundworker während dem Rechnen schon Ergebnisse in die Textbox schreibt. Aber halt keinen ReportProgress sondern einen String.


Trautmann - Sa 28.03.09 12:06

Bin fündig geworden:
http://msdn.microsoft.com/de-de/library/ms171728.aspx


Kha - Sa 28.03.09 12:22

ReportProgress besitzt auch eine Überladung, der du ein beliebiges object mitgeben kannst.