Hallo,
ich habe einen Button der, wenn man auf ihn klickt, einen Thread startet. In diesem Thread sollen so lange Daten generiert werden bis wieder auf den Button geklickt wird und der Thread beendet wird. Jetzt habe ich also sozusagen eine Endlosschleife in meinem Thread. Wenn ich kompiliere bekomme ich immer einen Fehler „0xC0000005: Access Violation“. Was mache ich nur falsch? Wenn ich den Thread starte klappt alles, erst wenn ich ihn wieder beenden will kommt der Fehler. Ich beenden den Thread mit „TerminateThread“, ich weis dass man das nicht tun sollte, aber ich habe ja keine andere Wahl. Kann mir irgendwer helfen?
OnButton()
{
InitializeCriticalSection(&Section);
if(clicked==true)
{
DWORD lpExitCode;
GetExitCodeThread(hThread,&lpExitCode);
TerminateThread(hThread,lpExitCode);
clicked = false;
}
else
{
clicked = true;
hThread = CreateThread(NULL,0,ThreadFunc,NULL,0,NULL);
WaitForSingleObject(hThread,100);
}
DeleteCriticalSection(&Section);
}
DWORD WINAPI ThreadFunc(LPVOID data)
{
EnterCriticalSection(&Section);
int \*x = 0;
int \*y = 0;
int count = 0;
x = new int [];
y = new int [];
srand(1);
while (clicked == true)
{
Sleep(50);
count = count + 1;
x[count] = count;
y[count] = rand() % 2;
}
LeaveCriticalSection(&Section);
return((DWORD)data);
}
Ich bin mit meinem Latein wirklich am Ende. Hab schon alles ausprobiert. Komisch ist dass ich nicht immer ein Access Violation bekomme. Manchmal klappt alles reibungslos, aber das kommt eher selten vor. In den meisten Fällen bekomme ich den Fehler. Bitte helft mir.