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."
Ist der Sourcecode geheim oder sollen wir den Fehler erraten? merciless
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.
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.
Nimm mal das "static" weg. In einer statischen Methode gibt es kein "this".
S.E. schrieb: > Nimm mal das "static" weg. In einer statischen Methode gibt es kein > "this". Das wird nicht gehen. Er kann aber eine statische Variable definieren und der er einen "this"-Zeiger speichert, damit die statische Methode darüber zugreifen kann.
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.
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.
Entwickler schrieb: > Fehler CS0120 Für das nicht statische Feld, die Methode oder die > Eigenschaft "Form.textbox1" ist ein Objektverweis erforderlich. Der Fehler besagt, dass du auf ein Objekt zugreifst (Form.textbox1), welches noch nicht instantiiert worden ist, ein "NULL-Zeiger" quasi. Aber wenn du den Code nicht postest, kann man dir auch nicht helfen. merciless
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.