void CAutoLoad::StartThread() { g_pLoadThread = AfxBeginThread(...); g_bRunning=true; g_pLoadThread->ResumeThread(); // 꼭 SUSPEND 로 만든 뒤 Resume 할 필요는 없지 않을까나.. }
// 일단 제가 테스트할때는 여기서 생성 않았지만 어차피 CAutoLoad 생성자에서 // 쓰레드 생성 않으니 그냥 CAutoLoad 클래스를 생성해도 될듯 m_pAutoLoad = NULL; } ... void CCustomDic2::FileClear() { // 아마 가장 처음에 불리는 m_pAutoLoad 관련 메쏘드가 이것인듯. if (!m_pAutoLoad) { m_pAutoLoad = new CAutoLoad; // 일단 쓰레드 생성 확인 방법을 잘 몰라 클래스 생성을 체크하는 방법을 사용. m_pAutoLoad->StartThread(); // 쓰레드 생성을 이렇게 따로 해줌 } m_pAutoLoad->FileClear(); }
// 혹은.. 아예 CATPluginApp 에서 CCustomDic2 를 생성시키고 나서 바로 StartThread() 를 부르는 // 방법도 생각해 볼 수 있음.
문제는.. 생성자에서 쓰레드를 생성시킨 것이었습니다.
// AutoLoad.h
class CAutoLoad {
...
public:
void StartThread();
};
// AutoLoad.cpp
CAutoLoad::CAutoLoad()
{ // 생성자
g_pLoadThread = NULL; // 여기서 쓰레드 만들지 말것
g_bRunning=false;
}
void CAutoLoad::StartThread()
{
g_pLoadThread = AfxBeginThread(...);
g_bRunning=true;
g_pLoadThread->ResumeThread(); // 꼭 SUSPEND 로 만든 뒤 Resume 할 필요는 없지 않을까나..
}
// CustomDic2.cpp
CCustmoDic2::CCustomDic2()
{
...
// 일단 제가 테스트할때는 여기서 생성 않았지만 어차피 CAutoLoad 생성자에서
// 쓰레드 생성 않으니 그냥 CAutoLoad 클래스를 생성해도 될듯
m_pAutoLoad = NULL;
}
...
void CCustomDic2::FileClear()
{
// 아마 가장 처음에 불리는 m_pAutoLoad 관련 메쏘드가 이것인듯.
if (!m_pAutoLoad)
{
m_pAutoLoad = new CAutoLoad; // 일단 쓰레드 생성 확인 방법을 잘 몰라 클래스 생성을 체크하는 방법을 사용.
m_pAutoLoad->StartThread(); // 쓰레드 생성을 이렇게 따로 해줌
}
m_pAutoLoad->FileClear();
}
// 혹은.. 아예 CATPluginApp 에서 CCustomDic2 를 생성시키고 나서 바로 StartThread() 를 부르는
// 방법도 생각해 볼 수 있음.