티스토리 뷰

컴퓨팅/프로그래밍

스레드 시작과 종료

에어버스 2013. 11. 24. 19:37

UINT ThreadFunc_WAIT(LPVOID pParam);

class CBookingDlg : public CDialog
{
 .
 .
 .
private:
 CWinThread* m_pThread;
};

void CBookingDlg::OnBnClickedButtonBuy()
{
 .
 .
 .
  // 쓰레드 처리
  m_pThread = AfxBeginThread(ThreadFunc_WAIT, this); // 쓰레드로 처리할 함수명와 전달 인수(Dlg를 변수)
}

UINT ThreadFunc_WAIT(LPVOID pParam) // 스레드 함수는 반드시 '외부함수'로 선언해야 한다.
{
  CBookingDlg *pDlg = (CBookingDlg*)pParam;
 .
 .
 .
 return 0; // 스레드 자동 소멸 됨.
}

void CBookingDlg::OnBnClickedButtonStop()
{
  DWORD dwExitCode;
 ::GetExitCodeThread(m_pThread->m_hThread, &dwExitCode);
 if(AfxMessageBox("스레드를 중지하겠습니까?", MB_YESNO) == IDYES)
 {
  if(dwExitCode == STILL_ACTIVE) // 스레드가 실행 중인지 검사
   ::TerminateThread(m_pThread->m_hThread, 0); // 스레드 강제 종료 시 종료코드는 0으로 하는듯.
// AfxEndThread(0)는 쓰레드 내에서만 호출된다고 함.
  .
  .
 }
 }

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/07   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31