X
xxhadsg
Unregistered / Unconfirmed
GUEST, unregistred user!
我在对象create中创建了一个事件句柄:
FEventHandle := CreateEvent(Nil, True, False, nil);//PChar( 'ComPortDmEvent'));
在执行一个命令时:
procedure executecommand;
begin
//......
SetEvent( FEventHandle);
//WaitForSingleObject等待同步处理,直到超时或事件对象产生数据信号,
Result := WaitForSingleObject(FEventHandle, FCommandTimeOut) = WAIT_OBJECT_0;
end;
然后在Comm口接收数据事件中设置了信号状态:
ResetEvent( FEventHandle);
可是为什么只有超时后才能执行收到数据事件?我将这个对象设置为线程,然后在线程的Excute中
处理接收数据也不行。
//接收和处理数据
Synchronize(ProcReceiveData);
请哪位大侠详细解说一下WaitForSingleObject的使用。有完整示例发一个或贴出来也行。adsg@tom.com,谢谢。
再有,我如果在过程A中发送指令,并设置了一个状态Flag为True,在ProcReceiveData中设置Flag为False,则
while not Flagdo
C;
C可以执行,即Flag可以被设置为False.,如果我在线程的Excute中也如此调用A:
Synchronize(A);
那么Flag将不能被设置为False,程序一直等待。请大侠赐教。
FEventHandle := CreateEvent(Nil, True, False, nil);//PChar( 'ComPortDmEvent'));
在执行一个命令时:
procedure executecommand;
begin
//......
SetEvent( FEventHandle);
//WaitForSingleObject等待同步处理,直到超时或事件对象产生数据信号,
Result := WaitForSingleObject(FEventHandle, FCommandTimeOut) = WAIT_OBJECT_0;
end;
然后在Comm口接收数据事件中设置了信号状态:
ResetEvent( FEventHandle);
可是为什么只有超时后才能执行收到数据事件?我将这个对象设置为线程,然后在线程的Excute中
处理接收数据也不行。
//接收和处理数据
Synchronize(ProcReceiveData);
请哪位大侠详细解说一下WaitForSingleObject的使用。有完整示例发一个或贴出来也行。adsg@tom.com,谢谢。
再有,我如果在过程A中发送指令,并设置了一个状态Flag为True,在ProcReceiveData中设置Flag为False,则
while not Flagdo
C;
C可以执行,即Flag可以被设置为False.,如果我在线程的Excute中也如此调用A:
Synchronize(A);
那么Flag将不能被设置为False,程序一直等待。请大侠赐教。