Thread als Parameter eine DataGridView instanz
-
Hallo,
ich möchte aus einem Thread auf die DataGridView der Form1 zugreifen.Thread:
public ref class UDP_recv { public: DataGridView^ dgv_tmp; public: static void UDPrecv_() . . .
In der Klasse wird ein DataGridView Element erstellt.
Form1.h
UDP_recv^ objUDP = gcnew UDP_recv; objUDP->dgv_tmp = dgvResv; ThreadStart^ threadDelegate = gcnew ThreadStart( objUDP, &UDP_recv::UDPrecv_ ); //<- ERROR Thread^ udpThread_recv = gcnew Thread( threadDelegate ); udpThread_recv->Start();
Ein Objekt der Klasse erstellen und die Instanz der 'eigentlichen DataGridView' übergeben. Anschließend Thread estellen&starten.
Jetzt bekomme ich die Fehlermeldung:
"System::Threading::ThreadStart": Ein Delegatkonstruktor erwartet 1 Argument(e).Was mache ich falsch??..
Oder gibt es eine andere/bessere Lösung?Viele Grüße
dixxi
PS: ICH HABE DEN BEITRAG : "Windows Forms und Visual C++ MACHT KEINEN SINN!" GELESEN UND VERSTANDEN DANKE
-
Zuallererst: sieh dir bitte den Beitrag Windows Forms und Visual C++ macht keinen Sinn!
Desweiteren: Gib nie, niemals nicht Controls in andere Klassen und schon garnicht in Threads. Dafür gibt es bessere Wege.
Arbeite mit Events. Wenn dein Thread fertig ist, informiert er dein Formular. In deinem Formular musst du dann sauber Invoken.
-
Weil UDP_recv::UDPrecv_() keine Argumente hat und statisch ist muss der Delegate auch ohne UDP_recv Objekt erzeugt werden.
ThreadStart^ threadDelegate = gcnew ThreadStart(&UDP_recv::UDPrecv_ );
-
Der Thread liest Broadcast Packete aus und soll diese in die DataGridView schreiben das zum Hintergrund.
@inflames2k:
Wie im PS geschrieben hab ich den Artikel bereits gelesen..
Denoch möchte ich das Projekt in dieser Sprache realisieren.Wie muss der Invoke aussehen um die Daten, welche aus dem Netwerk gelesen werden, in die DataGridView schreibne zu können?
-
dixxi schrieb:
Wie muss der Invoke aussehen um die Daten, welche aus dem Netwerk gelesen werden, in die DataGridView schreibne zu können?
http://msdn.microsoft.com/de-de/library/a1hetckb.aspx#Y1000
Guck das Bsp. ganz unten...
-
dixxi schrieb:
Denoch möchte ich das Projekt in dieser Sprache realisieren.
Spricht ja nichts dagegen das Projekt in C++/CLI zu schreiben. - Aber das ganze mit Windows Forms zu tun bringt dir mehr Ärger als nutzen. Und nenns nicht gleich Sprache.