Socket (CAsyncSocket) in Thread (CWinThread)



  • Hallo

    Habe eine grosses Problem.

    Und zwar starte ich in meiner Applikation ein Thread und in diesem
    erstelle ich ein Objekt von CAsyncSocket und setze dieses auf Listen().

    Jetzt wenn ich das Programm schliesse, will ich zuerst das Socket schliessen, dann das Thread und anschliessend das ganze Programm.

    So sieht es bis jetzt aus:

    void CChatDlg::OnCancel()
    {
            // thread schliessen
    	delete m_pServerThread;
    
    	// Programm beenden
    	PostQuitMessage(0);
    }
    

    Im Destruktor vom Thread "versuche" ich noch das Socket zu schliessen.

    Doch wenn ich das Programm ausführe kommt beim Debuggen ein Fehler in Sockcore.cpp Linie 541:

    ASSERT(CAsyncSocket::LookupHandle(hSocket, FALSE) != NULL);
    

    Diese Meldung kommt immer! Egal ob ich versuche das Socket zu schliessen oder nicht.

    Wie muss ich das lösen?

    Vielen Dank.



  • Ich weis zwar nicht, ob das dein Problem auslöst, aber warum benutzt du zum Beenden PostQuitMessage(0);?
    Rufe an der Stelle doch einfach die Eltern-Methode auf,
    also

    CDialog::OnCancel();
    


  • Hallo

    Vielen Dank für die Antwort.
    Ok werde ich versuche mit der Parent Funktion zum schliessen.
    Aber es liegt nicht an diesem Befehl, weil beim debuggen er bei der delete Funktion abbricht.


Anmelden zum Antworten