|
쓰레드가 마우스 클릭시에 동작을 멈추는게 아니라...
Synchronize(&UpdateCaption);가 메인쓰레드에서 실행되기 때문에 마우스 클릭시에 저 구문이 실행될때 대기하게 됩니다.
JJ 님이 쓰신 글 :
: 첨부된 그림에서요
:
: 프로그램의 위 부분인데.. 폼 타이틀이 적혀있는 맨위 부분이요...
:
: 우선 쓰레드를 만들고 쓰레드 안에서 변수를 카운터합니다.
:
: 아래와 같이 작성했습니다.
:
: void __fastcall Test::UpdateCaption()
: {
: Form1->Panel2->Caption = count;
: }
: //---------------------------------------------------------------------------
: void __fastcall ::::Execute()
: {
: SetName();
:
: //---- Place thread code here ----
:
: while(1)
: {
: WaitForSingleObject((void *)Handle, 1);
: //Application->ProcessMessages();
:
: Synchronize(&UpdateCaption);
:
: count++;
:
: if (Terminated )
: break;
: }
: }
:
: 이렇게 프로그램을 작성하고 실행을 한뒤에 쓰레드를 실행시키면
: Panel2에 count값이 표시가 됩니다.
:
: 그런데 위에서 말했던 곳을 마우스로 클릭하면 잠시 멈추었다가 다시 값이 표시가됩니다.
:
: 특히 오른쪽마우스를 클릭한 상태로 있으면 카운터 값이 표시가 되지 않습니다.
:
: 혹시나 내부적으로는 쓰레드가 동작 되는 줄 알았는데 마우스를 클릭한 순간 부터 멈춰있다가 다시 시작을
: 하더라구요....
:
: 원래 쓰레드도 마우스 클릭에는 동작을 멈추는 건가요??
:
: 도움을 부탁드립니다.
|