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


Anmelden zum Antworten