|
생각을 잘못하신것 같습니다.
일정 시간 마다 어떤 작업을 해야 한다면 쓰레드 보다는 타이머 이벤트가 적당합니다.
꼭 쓰레드에서 특정 시간 이후에 실행은 요구하신다면
void thread()
{ static long inter = gettime();
static long now;
#define INTER 59
now = gettime() //초단위로 시간을 얻어 오는 함수는 님이 찾아 보세요...
if (now - inter > INTER)
{ inter = now;
원하는 작업
}
}
그럼
볼랜 님이 쓰신 글 :
: ※ 질문의 요지
: : 쓰레드 함수내부에서 OnTimer 이벤트를 동적생성하여 사용하려고 합니다.
: 즉 쓰레드 내부함수에서 현재초가 59초일때마다 어떤 동작을 실행합니다. 59초를 어떻게 구할수 있을까요?
:
: //---------------------------------------------------------------------------
: void __fastcall TForm1::OnTimerTimer(TObject *Sender)
: {
: AnsiString GetTime, Sec;
:
: GetTime = FormatDateTime("yyyymmddhhnnss", Now());
: Sec = GetTime.SubString(13,2);
:
: Caption = Now();
:
: /* 이 주석부분을 쓰레드 내부함수에서 사용
: if(Sec == 59){
: Edit1->Text = "TEST";
: }
: */
:
: }
:
: //---------------------------------------------------------------------------
: void __fastcall TForm1::Button2Click(TObject *Sender) // 쓰레드 내부함수라고 가정
: {
: TTimer *aTimer = new TTimer(Form1); // aTimer의 Owner를 정의
: aTimer->Enabled = false;
: aTimer->Interval = 1000;
: aTimer->Enabled = true;
: aTimer->OnTimer = OnTimerTimer; // OnTimer 이벤트 핸들러를 정의
:
: //아래부분을 어떻게 처리해야 매 59초마다 TestFuncion() 함수를 실행할까요?
: AnsiString GetTime, Sec;
:
: GetTime = FormatDateTime("yyyymmddhhnnss", Now());
: Sec = GetTime.SubString(13,2);
:
: if(Sec == 59){ //<--- 요부분을 어떻게 처리해야 할까요?
: // TestFuncion();
: }
:
: 감사합니다.~~
|