全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1259
推到 Plurk!
推到 Facebook!

如何在多執行序中動態宣告一個timer

尚未結案
chungho_chang
一般會員


發表:16
回覆:7
積分:4
註冊:2003-09-19

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-11-24 10:24:00 IP:61.59.xxx.xxx 未訂閱
請問各位前輩,我要在多執行序中動態宣告一個timer 並且在其ontime事件執行某件事,我應該要如何做? 請各位前輩教教我啊!~~謝謝
RaynorPao
版主


發表:139
回覆:3622
積分:7025
註冊:2002-08-12

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-11-24 11:04:36 IP:203.73.xxx.xxx 未訂閱
引言: 請問各位前輩,我要在多執行序中動態宣告一個timer 並且在其ontime事件執行某件事,我應該要如何做? 請各位前輩教教我啊!~~謝謝 < face="Verdana, Arial, Helvetica"> chungho_chang 你好: 小弟我覺得你的問題有點奇怪< >,是否能夠麻煩你詳細說明自己的目的、條件 、想法?? 或許會有更簡單的做法吧< > -- Enjoy Researching & Developing --
------
-- 若您已經得到滿意的答覆,請適時結案!! --
-- 欲知前世因,今生受者是;欲知來世果,今生做者是 --
-- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 --
Albertz
初階會員


發表:2
回覆:57
積分:31
註冊:2002-09-05

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-11-24 11:55:41 IP:211.20.xxx.xxx 未訂閱
這是以前在學 Delphi 的 code, 在 BCB 中觀念也是一樣, 自己轉一下吧! Enjoy it!  < class="code"> procedure TMT.Execute; begin { Place thread code here } f1stNum := 10; SetTimer(0, 0, 10000, @TMT.myTimerProc); while GetMessage(wMsg, 0, 0, 0) do begin TranslateMessage(wMsg); DispatchMessage(wMsg); end; end; procedure TMT.myTimerProc(hwnd : HWND; uMsg, idEvent : UINT; dwTime :DWORD); begin f2ndNum := f1stNum; end;
frankiech
中階會員


發表:7
回覆:78
積分:52
註冊:2002-08-29

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-11-25 08:50:33 IP:210.241.xxx.xxx 未訂閱
Use TimeSetEvent WaitForSignalObject/WaitForMultipleObjects
Albertz
初階會員


發表:2
回覆:57
積分:31
註冊:2002-09-05

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-11-25 14:39:42 IP:211.20.xxx.xxx 未訂閱
節錄自 expertsXexchange, 可以參考一下
type
 TMyThread = class(TThread)
 private
   FEvent: THandle;
   f2ndNum: Integer;
   f1stNum: Integer;
 public
   procedure Execute; override;
   procedure TerminateEx;
 end;     TForm1 = class(TForm)
   TerminateThreadBtn: TButton;
   CreateThreadBtn: TButton;
   procedure TerminateThreadBtnClick(Sender: TObject);
   procedure CreateThreadBtnClick(Sender: TObject);
 private
   { Private-Deklarationen }
 public
   { Public-Deklarationen }
 end;    var
 Form1: TForm1;
 MyThread: TMyThread;    implementation    {$R *.DFM}    procedure TMyThread.TerminateEx; 
begin 
 Terminate; 
 // tell thread to terminate
 SetEvent(FEvent);
end;    procedure TMyThread.Execute;
begin
 FEvent := CreateEvent(nil, False, False, nil);
 try
   while not Terminated do
   begin
     // wait 3000ms or break if terminated (FEvent)
     if WaitForSingleObject(FEvent, 3000) = WAIT_OBJECT_0 then
     begin
       Break;
     end;
     MessageBeep(1);
     // ... one MessageBeep is enough         f2ndNum := f1stNum;         Break;  // comment for polling
   end;
 finally
   CloseHandle(FEvent);
 end;
end;    procedure TForm1.TerminateThreadBtnClick(Sender: TObject);
begin
 MyThread.TerminateEx;
end;    procedure TForm1.CreateThreadBtnClick(Sender: TObject);
begin
 // create thread (suspended)
 MyThread := TMyThread.Create(false);
end;    end.    
系統時間:2024-11-23 10:01:18
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!