Threadprobleme in MFC Programm

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.

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?

die sagen das
http://www.cpp-tutor.de/mfc/mfc/kap2/_intern/pquitms…

gefunden hab ich hier ne anleitung , aber englisch
http://www.ucancode.net/Visual_C_MFC_Example/WaitFor…

aber echt mit viel code !!!

aber eigentlich und so hab ichs auch bei microsoft gelesen

AfxBeginThread, AfxEndThread, PostQuitMessage

Die vorzeitige Beendigung eines Threads ist ähnlich einfach: Rufen Sie vom Thread aus AfxEndThread auf. Übergeben Sie den gewünschten Exitcode als einzigen Parameter. Hierdurch wird die Ausführung des Threads beendet, der Stapel des Threads freigegeben, alle mit dem Thread verbundenen DLLs getrennt und das Threadobjekt aus dem Speicher gelöscht.

http://msdn.microsoft.com/de-de/library/2s21xzfe%28V…

(ich selber , keine ahnung, mal ausprobieren :smile:

Danke für deine Tips. Leider will das Tutorial einfach nicht hinhauen bei mir. Noch nicht mal wenn ich den Code runter lade. Das wäre eigentlich perfekt gewesen und genau das wonach ich gesucht habe.

VG Laura