|
안녕하세요?...
제가요..
한 프로그램에서 쓰레드를 세번 사용하는데요..
제일 처음 쓰레드를 썼을때는 아무 문제가 없었습니다.
(버튼1을 누르면 쓰레드1을 호출)
그러다가 또 다른 쓰레드를 만들었습니다. (버튼2를 누르면 쓰레드2를 호출)
그랬는데.. 메모장이 사라졌습니다.
이번에 세번째 쓰레드를 썼는데요.. (버튼3 클릭)
그 버튼클릭 이벤트가 끝나면 역시 메모장이 없어집니다..
프로그램을 종료하니까..
Project1.exe raised exception class EWin32Error with message 'Win32Error. Code:1400. 잘못된 창 핸들입니다'. Process stopped. Use Step or Run to continue;
이런 에러 메시지가 나오면서..
forms.hpp 에 있는
/* TCustomForm.Destroy */ inline __fastcall virtual ~TForm(void) { }
문장으로 가네요..
쓰레드와 관련된 코드는...
void __fastcall TForm1::Button3Click(TObject *Sender)
{
mStackThreadAA =
CreateThread(0,0,(unsigned long (__stdcall *)(void *))callRunStackAA,this,0,&mStackThreadIdAA) ; // (윗줄이랑 이어진 문장임)
}
//-----------------------------------------
NT callRunStackAA(LPVOID * p)
{
TForm1 * winStack = (TForm1 *) p ;
winStack->bt_aa_testClick(Form1);
CloseHandle(winStack->mStackThread1);
//-----------------------------------------
HANDLE mStackThreadAA ;
ULONG mStackThreadIdAA ;
friend UINT callRunStackAA(LPVOID * p) ;
//-----------------------------------------
이렇고요..
쓰레드를 사용하고 나서 뭐.. 해제 이런거 해줘야 되나요?..
프로그램 초보인데.. 쓰레드도 어디서 참고해서 사용한 것입니다.
메모장이 왜 사라지는지.. 어떻게 조치해야 되는지.. 혹시 알수 있나요?...
부탁드리겠습니다... 그럼 수고하세요..
|