关于函数调用返回值问题。(100分)

  • 主题发起人 主题发起人 Nizvoo
  • 开始时间 开始时间
N

Nizvoo

Unregistered / Unconfirmed
GUEST, unregistred user!
现在函数

function GetFileList: Boolean;
begin
SendData; //向端口发一个请求那么PC接收时是激发通信控件事件
Result := ?如何返回正确的PC接收时的停息
end;
 
呵呵,好办法没有,笨办法到有一个:
用解决线程互斥的办法.在SendData前置一个标志(随便用什么,互斥旗语都可以).
然后在SendData后调用WaitForSingleObject.
同时,在接受到返回是恢复标志.
 
像CopyFile不知道是如何做到的,内部。
 
原理都是一样的,hehe,包括RPC也是.
 
标志用什么好呢?我一下不知道如何是好了。。。。蒙了。。。
 
function GetFileList: Boolean;
begin
//开始某个线程
SendData; //向端口发一个请求那么PC接收时是激发通信控件事件
Result := ?如何返回正确的PC接收时的停息
//等待上面那个线程结束 这个地方不激发事件。
end;
 
Mutex, Semaphore, Event
甚至CriticalSection都可以.
 
等待不了,一闪即过。
可否提供片断代码
 
var
Event: TEvent;
ReturnValue: TAnyType;
...
function GetSomething: TAnyType;
begin
Event.ResetEvent;
SendData;
if Event.WaitFor(2000)=wrSignaled then
Return:=ResturnValue;
end;

procedure SomeComponentReceive(Sender: TObject...);
begin
ReturnValue:=TSomeComponent(Sender).Receive;
Event.SetEvent
end
 
无法响应事件
出现死屏
 
我水平有限.
 
谢谢你,可能是我自己某处的问题。
对了,我是COM形式。向外发布函数,要实现通讯部分的封装。
 
请大家发言
 
Nizvoo:
能否用发送消息的方法,就是你用SendData发送信息,PC接收到的时候给你发个消息过来。
呵呵,如果说了外行话,不要责怪我[:D]
 
可能要握手信號才行呀
 
后退
顶部