|
볼랜드포럼 보면서 스레드 연습을 할려고 예제를 하나 만들었는대..
Access Violaton 발생합니다. 고수님들의 조언좀 부탁 드림니다.
// TEST.cpp 파일 내용
#include "TEST.h"
#include "Main.h"
CSRC *SRC;
unsigned int __stdcall ThreadStdCall(void *lpParam);
void __fastcall CSRC::Initialize()
{
hSRCThread = NULL;
}
int __fastcall CSRC::Start()
{
hSRCThread = ::CreateThread( NULL, 0,
(LPTHREAD_START_ROUTINE)ThreadStdCall,
this, CREATE_SUSPENDED, NULL );
if(hSRCThread == NULL){ return -1; }
}
unsigned int __stdcall ThreadStdCall(void *lpParam)
{
CSRC *pSRC = (CSRC *)lpParam;
pSRC->SRCThreadProc(lpParam);
}
int __fastcall CSRC::SRCThreadProc(LPVOID lpParam)
{
Form1->test->Caption = "HELLO WORLD!!"; //Main Form에서 이 문자열 보고 Thread 실행됨을 판단 테스트
}
// TEST.cpp 함수를 호출하기 위한 Main
#include "TEST.h"
extern CSRC *SRC;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
// SRC->Initialize();
// SRC->Start();
// 위 주석을 해제하면 에러가 발생합니다..
}
제가 어느부분을 놓친걸가요?
조언좀 부탁드리겠습니다.
|