我以 02_TwoWayHello 为例。 我将过程添加到代码中。
procedure MyTask (const task: TOmniTask);
var
msgData: record
foo: Word;
bar: Word;
end;
msg: TOmniValue;
msgID: word;
RandTimeOut: integer;
begin
repeat
RandTimeOut: = 5000 {ms} + Random (501) {0..500 ms};
case DSiWaitForTwoObjects (Task.TerminateEvent, Task.Comm.NewMessageEvent, false, RandTimeOut) of
WAIT_OBJECT_1: begin {something} end;
WAIT_TIMEOUT: begin {something} end;
end; {end case}
until (Task.Terminated);
end;
通常,它对应于示例本身中的 RunHello 过程。 我进一步更改代码
procedure TfrmTestTwoWayHello.actStartHelloExecute (Sender: TObject);
begin
FHelloTask: = FMessageDispatch.Monitor (CreateTask (MyTask, 'Mytask')).Run;
// FMessageDispatch.Monitor (CreateTask (RunHello, 'Hello'))
// .SetParameter ('Delay', 1000)
// .SetParameter ('Message', 'Hello')
// .Run;
end;
为什么在编译时出现错误: E2250没有可通过这些参数调用的'CreateTask'重载版本 怎么了?