Thread Probleme mit Variablen
-
ich habe eine Form:
class TFormMain : public TForm { ... static DWORD WINAPI ThreadProc(LPVOID lpParameter); void Test(); TBool bTimeout; }meinen thread starte ich beim Click auf einen Button mit CreateThread
if (hThreadTest = CreateThread(NULL,0,&ThreadProc,NULL,0,&udwThreadTestId)) bThreadTestRunning = true;der Aufruf meiner eigentlichen Threadfunktion sieht so aus.
DWORD WINAPI TFormMain::ThreadProc(LPVOID lpParameter) { ((TFormMain *)lpParameter)->Test(); return(0); }wenn ich jetzt auf bTimeout zugreifen will bekomme ich eine exeption:
void TFormMain::Test() { bTimeout = false; }Meldung: Im Projekt ... .exe trat ein Problem mit folgender Meldung auf: 'Zugriffsverletzung bei 0x00402e5c Schreiben von Adresse 0x00000768'. Prozesß angehalten Mit Einzelne Anweisung oder Start fortsetzen.
Bin für Hinweise dankbar.
MfG
-
Hallo
Lies mal nach was der vierte Parameter der CreateThread-Funktion bedeutet und was du dort übergibst.
Und warum benutzt du WinAPI-Threads und nicht TThread?
bis bald
akari
-
Danke habe den this Zeiger vergessen.
Ich habe noch nie TThread benutzt, da ich auch mit Visual Studio programmiere. Sind TThreads einfacher zu handhaben?
MfG
-
Hallo
Sie entsprechen eben den VCL-Gegebenheiten und gerade der vergessene this-Zeiger wäre da kein Problem gewesen, arbeitet TThread doch bereits auf Methoden anstelle statischer Funktionen.
bis bald
akari