안녕하세요.
쓰레드 클래스
__fastcall ThreadTest::ThreadTest(String praram)
: TThread(false)
{
FreeOnTerminate = true;
}
밑에.. excute있고..
/////////////////////
메인 h 선언
ThreadTest* m_thread;
////////////////////
메인 Cpp
m_thread = new ThreadTest(param);
이렇게 쓰레드 객체 생성하고
쓰레드가 끝나면 저절로 해제가 되잖아요.
지금 제 상황은 쓰레드 함수에서 WriteFile 을 쓰게되면 코드진행이 더 이상되지않고 말그대로 멈춰있는데 이런상황에서 메인폼에서 쓰레드를 죽이고 싶은데 어떻게 해야할까요 .
클릭함수
for(int i =0 ; i < 25; i++)
{
Sleep(1000);
Application->ProcessMessages();
if(쓰레드가 멈추지않고 진행이 정상적으로 됐을떄)
{
return;
}
}
if(스레드가 멈춰있을때)
{
if(m_thread != NULL)
{
m_thread->Terminate();
}
}
이런식으로 해결을 했었는데 간헐적으로 cannot terminate an externally created thread 이 에러가 떨어지네요
구글링해봐도 잘 이해가 가지않아서 질문드립니다.
추신: 64bit 환경에서는 잘되는데 32비트에서만 그런거같네요 찾아보니까 해당 바이트수가 정해져있는데 넘어서서 그런걸까요 ?
|