TSimpleEvent的使用(50分)

  • 主题发起人 主题发起人 hujunyi
  • 开始时间 开始时间
H

hujunyi

Unregistered / Unconfirmed
GUEST, unregistred user!
...
MyEvent := TSimpleEvent.Create;
if MyEvent.WaitFor(10000) = wrSignaled then
//(不知用wrTimeout、wrAbandoned还是wrSignaled)
begin
... // 我的原意是:当在一个线程中给MyEvent一个信号或到了10秒,也就TimeOut的时候执行
//begin
... end 中的这些代码。
end;

可是,我现在不知道怎么给MyEvent一个Signal信号
请大虾们不惜赐教,小生感激不仅。
 
MyEvent.SetEvent;
// 同步信号置位
TSimpleEvent.Create = TEvent.Create(nil, True, False, nil)
= CreateEvent(nil, True, False, nil);
其中第三个参数表示同步信号初始化时状态
True表示置位Signaled,即SetEvent
False表示复位nonSignaled,即ResetEvent
WaitFor(Timeout) = (wrSignaled, wrTimeout, wrAbandoned, wrError);
分别表示条件:
1、超时或信号置位 2、只是超时 3、超时前信号Destroy 4、超时前发生错误
你的程序没有问题,但是WaitFor如果用在主程序中而不是在线程中会造成消息阻塞的
 
我怎么能结束这个等待(在TimeOut时间内)
谢谢
 
如果你还要继续讨论请定期提前你的帖子,如果不想继续讨论请结束帖子。
 
有人吹我了。
 
后退
顶部