CreateThread()
-
Hallo,
ich habe ein Problem mit CreateThread(..)
bei mir steht das hier:
LPSECURITY_ATTRIBUTES SA; LPDWORD lpThreadID; HANDLE hThread; SA->nLength = sizeof(LPSECURITY_ATTRIBUTES); SA->bInheritHandle = TRUE; hThread = CreateThread(SA, 0, PrepForConn, this, 0, lpThreadID);
Die ThreadProc sieht so aus:
static DWORD WINAPI PrepForConn(LPVOID p) { ... MessageBox(NULL, "Test", 0, 0); }
Ich will die ThreadProc als Memberfunktion aus einer Klasse herrausstarten (von einer anderen Memberfunktion aus).
Wenn ich das so mache, wie oben, kriege ich "Fehler in Anwendung" und das Programm stürzt ab, sprich irgendwas mit ungültigem Speicherzugriff.
Meine Projekteinstellungen (Vc++ 6.0) sind auf Multithreaded debuggen.Wenn ich das ganze allerdings mit _beginthread(...) mache, dann gehts...
Nehme an, es hat was mit der CRT zu tun...(weiß nur nicht was)Ich brauche den Handle, um zum späteren zeitpunkt aus einer anderen memberfunktion herraus den Thread wieder schließen zu können.
Danke im Vorraus und Mfg, '][' !
-
Und warum benutzt du dann kein _beginthread ?
*
Return ValueIf successful, each of these functions returns a handle to the newly created thread. _beginthread returns –1 on an error, in which case errno is set to EAGAIN if there are too many threads, or to EINVAL if the argument is invalid or the stack size is incorrect. _beginthreadex returns 0 on an error, in which case errno and doserrno are set.
*Ausserdem ist _beginthread besser als createthread.
-
du legst zwei zeiger an, aber lässt sie auf nichts gültiges zeigen