Visual Studio C++ forms (managed) mit C++ native Arbeitsthread
-
Hallo,
Ich habe da ein kleines Problem bei dem ich ziemlich ratlos bin.
Ich habe eine Konsolenanwendung geschrieben, welche multithreaded ist, und
in C++ native code geschrieben ist.
Nun habe ich mir aber gedacht, ich möchte noch ein nettes GUI dazu haben,
und so hab ich in Visual Studio 2005 ein neues Projekt gemacht mit windows Forms,
und habe den code von der konsolenanwendung dazugetan. Es lässt sich auch
kompilieren und alles, nur das Problem ist leider, das ich keine
Ahnung habe wie ich von dem native C++ Arbeitsthread etwas in eine Textbox aus
dem managed windows form ausgebe, oder auch sonstige Form-Elemente aus der
Formklasse verändere.MFG
Danke schön im vor raus.
-
Bau in dein Fenster eine Methode rein, die vom anderen Thread aus aufgerufen wird.
(Natürlich braucht der native Thread entweder direkten Zugriff auf das
Fensterobjekt oder einen delegate für die Methode, evtl. brauchst du noch
gcroot<..> um eine managed reference in nativer Umgebung halten zu können)In der Fenstermethode machst du dann folgendes:
delegate void void_delegate_int(int I); void foo(int ActionId) { if (this->InvokeRequired) { // Anfrage (asynchron, bzw. nur Invoke() für synchronen Aufruf) an den GUI Thread weiterleiten this->BeginInvoke(gcnew void_delegate_int(this, &Form1::foo), ActionId); } else { // hier Controls verändern } }
-
-
Danke, ich werd das mal versuchen
MFG