C#: Toolbox ELement mit GUI synchronisieren

Gast #6729884
Lesenswert?

Hi,

in meiner C# Windows Forms Anwendung habe ich ein Toolbox ELement 
richtTextBox. Dieses soll nun mit der GUI Thread synchronisiert werden.
Dazu gibt es ja verschiedene Möglichkeiten. Allerdings funktioniert das 
mit dem Dispatcher, Invoke usw. nicht. Visual Studio wirft immer den 
Fehler

"Schweregrad  Code  Beschreibung  Projekt  Datei  Zeile 
Unterdrückungszustand
Fehler  CS0120  Für das nicht statische Feld, die Methode oder die 
Eigenschaft "Form.rtb_PrintRecvData" ist ein Objektverweis 
erforderlich."
Gast #6730084
Lesenswert?

Ich habe ein generelle Problem. Zum Beispiel möchte ich eine textbox 
oder richtextbox mit dem GUI Thread synchronisieren. Das heisst wenn ich 
GUI aktiv ist sollen auch Daten in die textbox einegeben und angezeigt 
werden können. Ich weiss das da was gibt mit Invoke allerdings gelingt 
mir das nicht.
Gast #6730108
Lesenswert?

1
public Form()
2
{
3
   ...
4
   client.MqttMsgPublishReceived += client_MqttMsgPublishReceived;
5
   ...
6
}
7

8
static void client_MqttMsgPublishReceived(object sender, MqttMsgPublishEventArgs e)
9
        {
10
            string ReceivedMessage = Encoding.UTF8.GetString(e.Message);
11
            textbox1.Text += ReceivedMessage;
12
        }

Fehlermeldung:
Schweregrad  Code  Beschreibung  Projekt  Datei  Zeile 
Unterdrückungszustand
Fehler  CS0120  Für das nicht statische Feld, die Methode oder die 
Eigenschaft "Form.textbox1" ist ein Objektverweis erforderlich.
Gast #6730229
Lesenswert?

Lars R. schrieb:
> Das wird nicht gehen.

Warum sollte das nicht gehen? Ich sehe keinen Grund einen Event Handler 
als statische Methode zu deklarieren. Solange der Event Handler nicht 
innerhalb einer statischen Methoder zugewisen wird, sollte der Delegate 
die "this"-Referenz speichern und dem Handler beim Aufruf mitgeben.

Ich lasse mich gerne eines Belehren, aber dann bitte mit Begründung, 
warum das so nicht gehen sollte.
Gast #6730239
Lesenswert?

Lars R. schrieb:
> S.E. schrieb:
>
>> Nimm mal das "static" weg. In einer statischen Methode gibt es kein
>> "this".
>
> Das wird nicht gehen.


Doch.


Trotzdem kann es noch probleme mit dem Zugriff auf das ui-element geben, 
falls der mqtt Client nicht im ui thread läuft, bzw das Event nicht im 
ui thread bearbeitet wird.

Illegal crossthead exception oder so.
Dann kommt der Spaß mit dem Dispatcher zum Zuge.

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