|
TBootThread에서 Image 처리를 해도 될 것 같은데 또다른 Thread를 생성해서 처리하는 것을 보니...
뭔가 특별한 이유가 있으시 겠지요 ^_^;;
제 생각엔 ...
나타나는 오류 메시지와 아래 처리 부분과의 직접적인 관계는 없어 보입니다.
다만 TImage가 VCL 이므로 CriticalSection 보단 Syschronize()로 처리하는게 좋을 듯합니다.
참고하세요.
--------------------------------------------------------------------------
초보 님이 쓰신 글 :
: Thread1 = new Thread1(ThreadSel); //외부에서 쓰레드 호출합니다.쓰레드 1을 호출합니다
:
: ////////////////////쓰레드 1
: void __fastcall TBootThread::Execute()
: {
: while(!Terminated && ThreadFlag == 1 )
: {
: EnterCriticalSection(&CriticSec);
: BulThread = new BulOnOff(true); -->쓰레드 2 호출
: UpdateThread(); -->함수를 호출하여 함수를 동작합니다.
: ThreadFlag = 0;
: BulThread->Terminate(); -->쓰레드 2를 터미네이트합니다,
: LeaveCriticalSection(&CriticSec);
: Sleep(20);
: }
: }
: /////////////////쓰레드 2
: void __fastcall BulOnOff::Execute(void)
: {
: while(!Terminated && TurnOnOff == true)
: {
: EnterCriticalSection(&cs);
: UpdateTurnOn(); ---->함수 동작시 여러개의 BMP 그림화일을 바꾸면서 표시합니다.
: LeaveCriticalSection(&cs);
: }
: EndBulOnOff();
: }
:
: TImage * GImage[5];
: GImage[0] = new TImage(GLamp0);
: ..
: 그림부분은 위와 같이 할당했습니다. GLamp0는 TImage입니다.
:
: 위와같이 쓰레드1이 동작하면서 2에서는 그림을 바꿔가면서 표시합니다.
: 그런데, 프로그램이 몇시간 정도 돌면 프로그램을 찾을수 없다라는 에러 메세지가 나옵니다.
: 가장 의심나는 부분이라 소스를 발췌해서 올립니다.
: 의심가는 부분이나 해결 방법에 대해서 좀 알려주세여..
: 몇주째 시원하게 풀리지 않는군여..
:
:
|