CAsyncSocket in Threads benützen?

Ich möchte eine Socketverbindung in einem Client aufbauen. Stelle ich die Verbindung im normalen Hauptthread in dem meine Dialog läuft funktioniert es einwandfrei. (Habe da einen Button wenn der angeklickt wird wird die Verbindung aufgebaut).

Jetzt will ich aber in einem eigenen Thread diese Verbindung aufbauen, da ich z.b. erst bei bestimmten ereignissen oder nach einer gewissen Zeit dies machen will. In dem fall kann ich ganz normal die Verbindung aufbauen, es werden dann aber keine Funktionen der von CAsyncSocket abgeleiteten Klasse aufgerufen (OnConnect, OnReceive) so das ich keine Daten empfangen kann. Ich glaube das da irgendwas mit der initalisierung nicht stimmt.

Hier paar Codeausschnitte:

//Hier der Verbindungsaufbau
Server = new CMySocket(this);
if(!Server-\>Create())
 m\_pWnd-\>Log.write(LOG\_ERROR,"Server-Socket konnte nicht aufgebaut werden");
if(!Server-\>Connect(m\_pWnd-\>gData.getSIP(),m\_pWnd-\>gData.getSPort()) && (error = Server-\>GetLastError()) !=10035)
{
 char msg[255];
 sprintf(msg,"Fehler beim Server-Verbindungsaufbau: %i",error);
 m\_pWnd-\>Log.write(LOG\_ERROR,msg);
 m\_pWnd-\>g\_eventSClose.SetEvent();
}

//CMySocket ist von CAsyncSocket abgeleitet und dort habe ich die Methoden OnConnect usw. überladen.
protected:
 virtual void OnSend(int nErrorCode);
 virtual void OnReceive(int nErrorCode);
 virtual void OnClose(int nErrorCode);
 virtual void OnConnect(int nErrorCode);
 virtual void OnAccept(int nErrorCode);


//Und hier z.b die OnConnect
void CMySocket::open\_mouth:nConnect(int nErrorCode)
{
 // Sind Fehler aufgetreten?
 if (nErrorCode == 0)
 // Nein, OnConnect-Funktion des Dialogfelds aufrufen
 m\_pWnd-\>OnConnect(this);
 else m\_pWnd-\>OnError(nErrorCode);
}