Hi guys, I can't stop my thread:

Code:
void MyClass:start()
 DWORD dwThread;
 thread_flag=1;
 hThread=CreateThread(NULL,0,startThread,(LPVOID)this,0,&dwThread);
}

DWORD WINAPI MyClass::startThread(LPVOID params)
{
 MyClass* p=(MyClass*)params;
 return p->myThread();
}

DWORD MyClass::myThread()
{
 while(thread_flag != 0){
  // do stuff
 }
 return 0;
};

void MyClass::stop(){
 // I try to stop it like this but it just hangs
 thread_flag=0;
 WaitForSingleObject(hThread,INFINITE);
 CloseHandle(hThread);
}
What am I doing wrong ? Thanks.