项目要对一个变量进行监控,有一个integer变量i,这个变量会在一个有规律的时间段内发生变化,在该时间段内i的值会变化,当这个i与预期设定好的值相等时触发报警事件。想问问各位高手如何在不用TTimer控件的情况下对i变量进行实时监控而又不影响程序执行其它事务(监控的同时还要执行其它任务)呢?有什么更好的解决方案呢,谢谢各位啊!

解决方案 »

  1.   

    用一个线程定时扫描就可以了,其效果跟TTimer相似
      

  2.   

    http://www.360doc.com/content/10/0802/18/2515704_43202197.shtml
      

  3.   

    随便模拟了一下,窗体上放一个Edit显示,你试试看!unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, ComCtrls, StdCtrls, ExtCtrls;type
      TForm1 = class(TForm)
        Edit1: TEdit;
        procedure FormCreate(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;  TMyThread = class(TThread)
      private
        procedure Execute; override;
      public
        constructor Create(CreateSuspended: Boolean);
      end;var
      Form1: TForm1;
      i: Integer;implementation{$R *.dfm}procedure TForm1.FormCreate(Sender: TObject);
    var
      testThread: TMyThread;
    begin
      i := 0;
      testThread := TMyThread.Create(False);
    end;{ TMyThread }constructor TMyThread.Create(CreateSuspended: Boolean);
    begin
      FreeonTerminate := True;
      inherited Create(CreateSuspended);
    end;procedure TMyThread.Execute;
    begin
      while i <> 10 do
      begin
        i := i + 1;
        Sleep(300);
      end;
      Form1.Edit1.Text := 'i is Changed!';
    end;end.