GetExitCodeThread(*,*)



  • ja, abbruch is ne member

    hab nur das this vergessen *zwinka*

    aber das hört sich gut an

    ich proebiere das gleich aus

    danke schonmal



  • ...dann must du aber auch innerhalb deiner Threadfunktion auf abbruch reagieren und nicht im dialog.

    Edit: .. machst Du schon 🙄 ...war gestern bei Robbie 😉


  • Administrator

    Gerade noch einen Fehler entdeckt. Mich hat das GetExitCodeThread schon vorhin gestört, dass du dem einen Zeiger auf deine Funktion übergibst, doch ich habe damit noch nie gearbeitet und deshalb nicht weiterüberlegt. Nun habe ich allerdings endlich in der MSDN nachgeschaut und siehe da ... GetExitCodeThread verlangt ein Handle auf deinen Thread und einen Zeiger auf eine DWORD Variable. Ich habe es oben editiert und führe es hier nochmals auf:

    DWORD dwExitCode = 0;
    GetExitCodeThread(m_pThread->m_hThread, &dwExitCode);
    

    Grüssli



  • jepp, das tu ich ja auch

    dann beende ich den thread



  • Dravere schrieb:

    Gerade noch einen Fehler entdeckt. Mich hat das GetExitCodeThread schon vorhin gestört, dass du dem einen Zeiger auf deine Funktion übergibst, doch ich habe damit noch nie gearbeitet und deshalb nicht weiterüberlegt. Nun habe ich allerdings endlich in der MSDN nachgeschaut und siehe da ... GetExitCodeThread verlangt ein Handle auf deinen Thread und einen Zeiger auf eine DWORD Variable. Ich habe es oben editiert und führe es hier nochmals auf:

    DWORD dwExitCode = 0;
    GetExitCodeThread(m_pThread->m_hThread, &dwExitCode);
    

    Grüssli

    jo sicher; stand da ja auch; aber da ich den zeiger bis eben noch nicht zugewiesen hatte, habe ich halt die funktion übergeben 😉



  • hey, es funktioniert *ggg*

    dankeschön 😉


  • Mod

    Boch mal was grundsätzliches, wenn man CWinThread* m_pThread = AfxBeginThread(...); ausführt, dann zerstört sich das CWinThread Objekt sofort wenn der Thread terminiert. Wenn man also noch was kontrollieren will, oder gar auf den Thread warten will, dann muss man m_bAutoDelete auf FALSE setzen und das Objekt selber per delete entsorgen!


  • Administrator

    Ups ... da hat er sogar recht.
    Ehm ... aber wenn man m_bAutoDelete verändert, sollte man dann den Thread nicht mit CREATE_SUSPENDED starten? Bzw. als Codeausschnitt:

    m_pThread = AfxBeginThread(AuswertungStarten, (LPVOID)this, THREAD_PRIORITY_NORMAL, 0, CREATE_SUSPENDED);
    if(m_pThread != NULl)
    {
        m_pThread->m_bAutoDelete = FALSE;
        m_pThread->ResumeThread();
    }
    else
    {
        // Thread konnte nicht gestartet werden.
    }
    

    Grüssli



  • alles klar

    hab ich jetzt alles auch so gemacht

    nur: wie lösche ich den thread? einfach mit Delete(); ?

    Edit: Neee, er wirft mir zwar keinen Fehler aus, aber dafür Memory Leaks *wein*


  • Mod

    Nicht Delete() sondern delete!


Anmelden zum Antworten