Hallo,
ich arbeite mit Visual C++ 6.0 und möchte eine Methode in einen Thread auslagern. Da ich in dem Thread auf diverse Methoden und Attribute des aufrufenden Objektes zugreifen möchte, übergebe ich einen Pointer auf das Objekt als Parameter (this).
HANDLE a\_hThread[1];
DWORD a\_dwThreadID = 0;
a\_hThread[0] = CreateThread( NULL,
0,
StartThread,
(LPVOID)this,
0,
&a\_dwThreadID );
Meine Thread- Methode ist wie folgt deklariert:
DWORD WINAPI StartThread(LPVOID pCMC\_TestDlg)
Über den Pfeiloperator kann ich jetzt problemlos auf die Eigenschaften des Objektes zugreifen.
CMC\_TestDlg\* dlg1 = (CMC\_TestDlg\*)pCMC\_TestDlg;
dlg1-\>attr1;
Wenn ich aber auf Methoden meines Objektes zugreifen möchte, hängt sich das Programm auf. Hat jemand eine Idee warum?
Vielleicht liegt mein Problem auch schon im Ansatz. Meine Klasse wird in einer Headerdatei deklariert. Ich hab anfangs probiert, die Thread- Methode in der Headerdatei zu deklarieren und dann einzubinden. Dann bekomme ich aber die Fehlermeldung:
‚CreateThread‘ : Konvertierung des Parameters 3 von ‚unsigned long (void *)‘ in ‚unsigned long (__stdcall *)(void *)‘ nicht möglich.
Ich hab noch diverse andere Möglichkeiten ausprobiert (Methode statisch, …), was aber alles nicht zum Erfolg geführt hat. Die momentane Realisierung sieht so aus, dass die Thread- Methode nicht in der Headerdatei deklariert ist, sondern nur in der cpp- Datei implementiert. So läuft der Thread auf jeden Fall erstmal.
Vielleicht hat jemand ne Idee, wo mein Fehler liegt.
Danke und Gruß
ziba