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
- CHauptDlgeine 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 aufrufendas 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!