Thread beenden und auf erfolgreiches beenden prüfen



  • hi,

    status:
    in meinem prog laufen mehrere threads,
    beim Programm beenden sollen diese dann beendet werden.

    // wird beim beenden aufgerufen
    void endThreadxy(void)
    {
        b_threadIsActive = false;
        Sleep(1000;
        return;
    }
    
    // der thread läuft solange die variable true ist
    DWORD WINAPI ThreadProc(LPVOID lpvoid) 
    {
        while(b_threadIsActive)
        { //mach was
        }
     return 0; 
    }
    
    // abfrage ob thread beendet
    checkThreadEnd()
    {
        if( hThreadHandle == INVALID_HANDLE_VALUE )
            return 0; // ok
    
        // nicht beendet ??
        // TrminateTread() aufrufen
        return 1;
    }
    

    mein problem ist nun, dass das handle (thread sollte eigentlich beendet sein) nicht "INVALID_HANDLE_VALUE" hat...
    wenn der thread mit return beendet, hat das handle dann einen anderen wert?
    muß ich dann auf NULL prüfen?

    oder das handle selber im thread vorm return auf INVALID setzen?
    darf ich das überhaupt machen?

    MfG
    Schandi



  • Prüf mit WaitForSingleObject() ob der Thread fertig ist.

    msdn schrieb:

    When a thread terminates, the thread object attains a signaled state, satisfying any threads that were waiting on the object.

    The thread object remains in the system until the thread has terminated and all handles to it have been closed through a call to CloseHandle.

    ...das Handle wird demnach erst ungültig wenn er geschlossen wurde.



  • danke, genau das hab ich gebraucht ^^


Anmelden zum Antworten