void __fastcall Test::Execute()
{
//---- Place thread code here ----
int i=0;
while(!Terminated)
{
i=30
while( i-- )
{
Sleep( 100 ); //<-- Sleep은 1000, 2000, 3000 ... 빠져나오지 못하는 Bug 있습니다. 생각이 가물가물.. 값을 짧게 주세요
if( Terminated ) break;
}
Synchronize(TimeDisplay); //<--- PostMessage로 보내서 main에서 처리하는게 더 안전할 것 같습니다.
} //Synchronize 이걸로 감싸도 되지만...
Form1->Label1->Caption = "End"; //<--- PostMessage로 보내서 main에서 처리하는게 더 안전할 것 같습니다.
}
//----------------------------------
참고만 하세요....^^ 새벽 5시가 다 되었네요.... 이제 뭐하지.... 그만할까.....
하안인 님이 쓰신 글 :
: WaitForSingleObject((void*)this->Handle ,3000);
: 로 하니 작동되네요.
:
: 그런데 쓰레드 상에서 Sleep 함수를 사용하면 가끔 쓰레드가 멈추는것 같은데
: Sleep 함수를 사용해서 그런건가요.
:
: 하안인 님이 쓰신 글 :
: : 빌더6을 사용하고 있습니다.
: :
: : thread 상에서는 Sleep 함수를 사용하지 않는 것이 좋다고 해서
: : WaitForSingleObject(NULL ,3000);
: : 를 써서 3초동안 시간지연을 하려고 하는데
: : 아래코드로 쓰레스 생성후 실행해도
: : 지연이 안되네요.
: :
: :
: : __fastcall Test::Test(bool CreateSuspended)
: : : TThread(CreateSuspended)
: : {
: : FreeOnTerminate = true;
: : }
: : //---------------------------------------------------------------------------
: : void __fastcall Test::Execute()
: : {
: : //---- Place thread code here ----
: : while(!Terminated)
: : {
: : WaitForSingleObject(NULL ,3000);
: : Synchronize(TimeDisplay);
: : }
: : Form1->Label1->Caption = "End";
: : }
: : //---------------------------------------------------------------------------
: : void __fastcall Test::TimeDisplay()
: : {
: : Form1->Label1->Caption = FormatDateTime("yyyy-mm-dd hh:nn:ss",Now());
: : }
|