小编Ala*_*ult的帖子

了解可等待计时器

关于可等待的计时器,我有些不明白。我在网上搜索并阅读了 MSDN 上的规范以及我在 stackoverflow 上可以找到的任何内容(例如link),但是我的计时器在 PC 挂起后几乎立即触发。

为了解决这个问题,我在 Windows 7 中使用 XE5(64 位)编写了一个小型测试应用程序,并尝试复制此处找到的项目:http : //www.codeproject.com/Articles/49798/Wake-the-PC-从待机或休眠

我以为问题是我推导时间的方式,但我似乎找不到问题所在。

测试应用程序看起来像这样(非常简单):

在此处输入图片说明

我声明线程类型如下

type
   TWakeupThread    = class(TThread)
   private
     FTime:         LARGE_INTEGER;
  protected
     procedure      Execute; override;
  public
     constructor    Create(Time: LARGE_INTEGER);
  end;
Run Code Online (Sandbox Code Playgroud)

...

constructor TWakeupThread.Create(Time: LARGE_INTEGER);
begin
  inherited Create(False);
  FreeOnTerminate:=True;
  FTime:=Time;
end;


procedure TWakeupThread.Execute;
var
   hTimer:     THandle;
begin
  // Create a waitable timer.
  hTimer:=CreateWaitableTimer(nil, True, 'WakeupThread');
  if (hTimer <> 0) then
  begin
     //CancelWaitableTimer(hTimer);
     if (SetWaitableTimer(hTimer, FTime.QuadPart, 0, nil, nil, True)) then
     begin
        WaitForSingleObject(hTimer, INFINITE);
     end; …
Run Code Online (Sandbox Code Playgroud)

delphi timer windows-7

5
推荐指数
1
解决办法
1529
查看次数

标签 统计

delphi ×1

timer ×1

windows-7 ×1