マルチスレッドについて勉強しているのですが、
検索等々してもわからなかったので質問させて下さい。
1つのスレッドではSeelpを実行し、
もう一方のスレッドではTTimerを使用して1秒間隔で
ラベルに現在時刻を表示、更新したいです。
#あくまで勉強なので、処理に意味はないです。
で、実装してはみたのですが、Sleepが帰ってくるまで
時刻の更新も止まってしまっている状況です。
どうすれば、Sleep中でも時刻の更新ができるのでしょうか。
宜しくお願い致します。
以下が環境です。
------------
WinXP
Delphi7
------------
実装状況がわからんのだが・・・
http://khe00221.image.coocan.jp/Component/ThreadTimer/ThreadTimer100.lzh
unit Unit5;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ThreadTimer, StdCtrls;
type
TForm5 = class(TForm)
ThreadTimer1: TThreadTimer;
ThreadTimer2: TThreadTimer;
Button1: TButton;
Memo1: TMemo;
procedure ThreadTimer1Execute(Sender: TObject);
procedure ThreadTimer2Execute(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private 宣言 }
public
{ Public 宣言 }
end;
var
Form5: TForm5;
implementation
{$R *.dfm}
procedure TForm5.Button1Click(Sender: TObject);
begin
ThreadTimer1.Enabled := True;
ThreadTimer1.Synchronize := False;
ThreadTimer2.Enabled := True;
ThreadTimer2.Synchronize := True;
ThreadTimer2.Interval := 1000;
end;
procedure TForm5.ThreadTimer1Execute(Sender: TObject);
begin
Sleep(5000);
Memo1.Lines.Add ('#');
end;
procedure TForm5.ThreadTimer2Execute(Sender: TObject);
begin
Memo1.Lines.Add (TimeToStr(Now));
end;
end.
ツイート | ![]() |