Forum: PC-Programmierung Control.Invoke ??


von Dieter (Gast)


Lesenswert?

Hallo,

Es ist wirklich zum verzweifeln.

Habe mir ein Terminalprogramm zum Senden und Empfangen von Daten über
die Serielle Schnittstelle geschrieben.

Werkzeuge:   Mikrosoft Visual Studio
             Programmiersprache C#

Geschrieben für Windows Mobile 5.0

Fall A:

1. Ein Zeichen gesendet PC -> PDA. Betätige den "receive" Button
   auf PDA.
--> In der textBox wird das empfangene Zeichen ausgegeben.

2. Ein Zeichen gesendet PDA -> PC. Betätige den "receive" Button
   auf PC.
--> In der textBox wird das empfangene Zeichen ausgegeben.

Soweit alles in Ordnung.


Da ich mir das Drücken von dem "receive" Button sparen möchte,
habe ich den Event Handler der Seriellen Schnittstelle eingebunden.

Fall B:

1. Ein Zeichen gesendet PC -> PDA.
   Auf PDA.
--> Fehlermeldung: "Control.Invoke muß für die Interaktion mit
                    Steuerelementen verwendet werden, die in einem
                    eigenen Thread erstellt wurden."

2. Ein Zeichen gesendet PDA -> PC.
   Auf PC.
--> In der textBox wird das empfangene Zeichen ausgegeben.

Da verstehe ich die Welt nicht mehr. Wieso läuft das gleiche
Progrämmchen auf dem PC unter Windows XP aber unter
Windows Mobile 5.0 läuft es in Fall B.1 nicht.

Bin unter C# blutiger Anfänger und weiß nicht was ich unter
Control.Invoke verstehen soll.

Für jeden Tipp dankbar.
Gruß
Dieter

von MNR (Gast)


Lesenswert?

Eigentlich sollte das auch unter XP nicht funktionieren. Der Zugriff auf
Controls ist nicht Threadsafe. Wenn du dir die Hilfe zu dem Fehler
anschaust, findest du auch Lösungsmöglichkeiten. Für einen schnellen
Test kannst du ja mal "CheckForIllegalCrossThreadCalls = false;" in
deiner Form ausprobieren.

Gruß,
Matthias

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
Noch kein Account? Hier anmelden.