Problem beim gekreuzten #include BEI Form1 startet thread->thread soll form1 beenflussen



  • Es handelt sich um ein Visual Studio 2008 C++/CLI Projekt.

    Ich habe vor aus der Form1 über ein Click event einen thread zu starten der wiederum mit Form1 kommuniziert, um dort z.B. Statusinformationen sichtbar zu machen.

    Form1.h muss natürlich den Namen der Thread Funktion kennen, weshalb ich in Form1.h die sslConnThread.h (Klasse mit dem Thread) include.
    Außerdem muss ich vorher den pointer des form1 Objektes an die sslConnThread.h übergeben.

    Die Thread Klasse muss die Innereien der Form1.h kennen um das übergebene Objekt form1 benutzen zu können. Also include ich in der sslConnThread.h die Form1.h.

    Nun bekomme ich aber leider beim compilen die Fehlermeldung, dass er in Form1.h die Klasse von sslConnThread.h nicht kennt. (nichtdeklarierter Bezeichner)

    Ich führe das darauf zurück, dass sich der event code direkt in der header Datei Form1.h befindet und nicht z.B. in einer Form1.cpp, die es ja nicht gibt...

    Nun beiße ich mir schon recht lange die Zähne daran aus.
    Die Frage ist nun, wie kann ich ein thread im Click event starten welcher anschließend Rückmeldungen an das form1 Objekt senden kann?

    Ich habe keinen source gepostet weil ich glaube, dass ich etwas fundamental falsch mache. Bzw. ich denke, dass andere Wege dafür vorgesehen sind.



  • Osbios schrieb:

    Ich führe das darauf zurück, dass sich der event code direkt in der header Datei Form1.h befindet und nicht z.B. in einer Form1.cpp, die es ja nicht gibt...

    Ganz richtig.

    Die Frage ist nun, wie kann ich ein thread im Click event starten welcher anschließend Rückmeldungen an das form1 Objekt senden kann?

    Indem Du eine Form1.cpp anlegst und die entsprechenden Funktionen darin auslagerst, damit der Compiler zuerst die Definition der Klasse A, dann die Definition der Klasse B (in deren Funktionsrümpfen bereits Bezug auf Klasse A genommen werden kann), und dann die Funktionsrümpfe der Klasse A sieht.



  • Danke.

    Ich kann es leider erst am Montag ausprobieren.


Anmelden zum Antworten