Probleme mit Threads



  • Hali Hallo,
    Ich bin an einem Server/Client Programm und möchte dies mit einem Thread versehen, da die recv() Funktion die Anwendung blockt ...
    Die Funktionen habe ich auch schön da eingebaut und Funktioniert alles auch super aber jetzt möchte ich, dass der Thread mit der Hauptanwendung (CProgrammDlg) kommunizieren kann, weiß aber leider nicht wie das geht?
    Kann mir einer helfen ?



  • MFC verwendet CAsyncSockets

    Möchtets du zu WINAPI ?



  • ja



  • Also ich beschreib das nochmal genauer:

    ich habe die HauptdialogKlasse nennen wir sie mal
    - CHauptDlg

    eine weiter Klasse abgeleitet von CObject
    - CSockThread
    mit einer bestimmten Thread Funktion:

    UINT MyThreadProc( LPVOID pParam )
    {
    CSockThread* pObject = (CSockThread*)pParam;
    
    if (pObject == NULL ||!pObject->IsKindOf(RUNTIME_CLASS(CSockThread)))
    return 1;
    
    // do somethin... 
    
    return 0;   
    }
    

    nun hab ich folgenden Threadaufruf (in CHauptDlg):

    pNewObject = new CSockThread;
    AfxBeginThread(MyThreadProc, pNewObject);
    

    So siehts aus und nun möchte ich aus meinem Thread (CSockThread)
    Funktionen aus der Klasse CHauptDlg aufrufen

    das hab ich dann bislang so gemacht

    CHauptDlg* zeiger;
    zeiger->funktion();
    
    wobei die Funktion() etwa so aussehen könnte 
    void funktion(void)
    {
    m_editbox = "Nachricht"; 
    UpdateData(FALSE);
    }
    

    Dabei bekomme ich jedoch eine Fehlermeldung bzw der Debugger zeigt eher auf diese Zeile Code (aus wincore.cpp)
    ASSERT(::IsWindow(m_hWnd)); // calling UpdateData before DoModal?

    Bitte um Hilfe!


Anmelden zum Antworten