スレッドについて
Posted: 2010年10月15日(金) 18:08
お世話なっています。
スレッドなぜ終了しないのか?わからないです。
ご教授の程、よろしくお願いします。
#include <process.h>
#include <windows.h>
class C_Thread
{
HANDLE m_hThread;
HANDLE m_hEvent;
static void CallFunc( LPVOID pParam );
protected:
virtual void MainFunc() = 0;
public:
C_Thread(void);
~C_Thread(void);
void EndWait();
};
C_Thread::C_Thread(void)
{
m_hEvent = CreateEvent(NULL,FALSE,FALSE,NULL);
//スレッド作成
m_hThread = (HANDLE)_beginthread(CallFunc,0,this);
}
//
C_Thread::~C_Thread(void)
{
//ハンドルクローズ
CloseHandle(m_hThread);
}
void C_Thread::CallFunc(LPVOID pParam)
{
C_Thread* pP = (C_Thread*)pParam;
pP->MainFunc();
pP->~C_Thread();
}
void C_Thread::EndWait()
{
WaitForSingleObject(m_hEvent,INFINITE);
}
class C_Threadtest : public C_Thread
{
public:
void MainFunc()
{
static int i;
while(2 > i++)MessageBox(NULL,"C_Threadtest","OK",MB_OK|MB_ICONINFORMATION);
return S_OK;
}
};
INT WINAPI WinMain( HINSTANCE , HINSTANCE, LPSTR, INT )
{
C_Threadtest test;
test.EndWait();
return 0;
}
よろしくお願いします。
スレッドなぜ終了しないのか?わからないです。
ご教授の程、よろしくお願いします。
#include <process.h>
#include <windows.h>
class C_Thread
{
HANDLE m_hThread;
HANDLE m_hEvent;
static void CallFunc( LPVOID pParam );
protected:
virtual void MainFunc() = 0;
public:
C_Thread(void);
~C_Thread(void);
void EndWait();
};
C_Thread::C_Thread(void)
{
m_hEvent = CreateEvent(NULL,FALSE,FALSE,NULL);
//スレッド作成
m_hThread = (HANDLE)_beginthread(CallFunc,0,this);
}
//
C_Thread::~C_Thread(void)
{
//ハンドルクローズ
CloseHandle(m_hThread);
}
void C_Thread::CallFunc(LPVOID pParam)
{
C_Thread* pP = (C_Thread*)pParam;
pP->MainFunc();
pP->~C_Thread();
}
void C_Thread::EndWait()
{
WaitForSingleObject(m_hEvent,INFINITE);
}
class C_Threadtest : public C_Thread
{
public:
void MainFunc()
{
static int i;
while(2 > i++)MessageBox(NULL,"C_Threadtest","OK",MB_OK|MB_ICONINFORMATION);
return S_OK;
}
};
INT WINAPI WinMain( HINSTANCE , HINSTANCE, LPSTR, INT )
{
C_Threadtest test;
test.EndWait();
return 0;
}
よろしくお願いします。