Threads



  • Hallo, mal wieder ein paar Frage zu Threads...

    Ich habe einen WorkThread erstellt - eine Funktion mit einer while Schleife, die durch setzen eines Parameters beendet werden kann. Wird die Schleife beendet, endet auch die ThreadFunktion mit return 0.

    ist damit auch der Thread beendet oder muss ich ihn anschließend noch manuell beenden?

    Beim Beenden des Hauptprogramms, beende ich die while-Schleife. Dann möchte ich aber noch auf das Ende des Threads warten, bevor ich die Applikation schließe. Wie mache ich das am besten?

    Wenn ich aus meinem Thread heraus
    ((CMainFrame*) AfxGetMainWnd())->UpdateStatus(1)
    aufrufe, welche das TrayIcon aktualisiert, steht plötzlich beim Text des Tooltipps Blödsinn drin. Außerhalb des Threads klappt der Aufruf aber ganz normal.

    Danke und Gruß
    Chris



  • Hi,
    der Thread ist dann beendet.

    Das kannst Du überprüfen mit dem TaskManager -> Reiter "Prozesse", in der Spalte "Threads".



  • Danke erstmal!
    Und kann mir noch jemand bei 2. und 3. helfen?

    Gruß...Chris



  • MuehBln schrieb:

    Beim Beenden des Hauptprogramms, beende ich die while-Schleife. Dann möchte ich aber noch auf das Ende des Threads warten, bevor ich die Applikation schließe. Wie mache ich das am besten?

    Das hier habe ich mal irgendwo gefunden

    // Now that all three threads are created and running, we need to stop the primary thread
     // (which is this program itself - Remember that once "main" returns, our program exits)
     // So that our threads have time to finish.  To do this, we do what is called "Blocking".
     // We're going to make main just stop and wait until all three threads are done.
     // This is done easily with the next line of code.  Please read the help file about 
     // the specific API call "WaitForMultipleObjects".
    
    	 waiter = WaitForMultipleObjects(MAX_THREADS,hThreads,TRUE,INFINITE);
    

Anmelden zum Antworten