Delphi的定时器类TTimer内部是创建不可见的窗口,调用SetTimer这个Win32 API 来实现的。TTimer要求使用它的线程实现了消息循环。所以,除非控制台程序中实现消息循环,否则TTimer在控制台程序中是无效的。不过为了使用方便,可以我们写一个线程类来实现消息循环,并且不必创建隐藏窗口便可以使用定时器。下面面的TSfTimerThread就是这样的类,它可以在不终止线程的情况下改变定时间隔和定时触发的函数。不过目前Enable属性是利用是否进行回调来实现的,也就是Enable设置为False时,定时器依然有效,并且线程会收到WM_TIMER消息,只是收到消息后不进行回调。由于关闭定时测试没有通过,所以暂时这样实现。



























