マルチスレッドについて


モンゴリアンチョップ  2010-05-20 08:35:20  No: 38494

マルチスレッドについて勉強しているのですが、
検索等々してもわからなかったので質問させて下さい。

1つのスレッドではSeelpを実行し、
もう一方のスレッドではTTimerを使用して1秒間隔で
ラベルに現在時刻を表示、更新したいです。
#あくまで勉強なので、処理に意味はないです。

で、実装してはみたのですが、Sleepが帰ってくるまで
時刻の更新も止まってしまっている状況です。

どうすれば、Sleep中でも時刻の更新ができるのでしょうか。

宜しくお願い致します。

以下が環境です。
------------
WinXP
Delphi7
------------


KHE00221  URL  2010-05-20 12:36:19  No: 38495

実装状況がわからんのだが・・・

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.


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加