通过代码取消空闲状态...

Jlo*_*uro 1 delphi

我正在检测机器的空闲状态,如果空闲,我会执行一个动作.

其中一个动作必须取消此状态,否则它将进入循环.
我想在我执行它时阻止重新进入我的空闲循环,我该怎么做?

Hei*_* Z. 5

防止重新进入的一种方法是记住你是否输入了事件处理程序:

type
  TForm1 = class(TForm)
    ApplicationEvents1: TApplicationEvents;
    procedure ApplicationEvents1Idle(Sender: TObject; var Done: Boolean);
  private
    { Private-Deklarationen }
    FInOnIdle: Boolean;
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.ApplicationEvents1Idle(Sender: TObject; var Done: Boolean);
begin
  if FInOnIdle then Exit;

  FInOnIdle := True;
  try
    
  finally
    FInOnIdle := False;
  end;
end;
Run Code Online (Sandbox Code Playgroud)