Черт побери, почему именно 5 секунд на вызов обратной функции, Карл?!
procedure TDSClientCallbackChannelManager.Invoke(const Id: string;
Data: TJSONValue; out Response: TJSONValue);
var
Item: TDSCallbackItem;
Callback: TDBXCallback;
ExecThread: TDSExecuteThread;
begin
TMonitor.Enter(FLocalCallbackRepo);
try
if FLocalCallbackRepo.TryGetValue(Id, Item) then
begin
Callback := Item.Callback;
try
TMonitor.Enter(Callback);
ExecThread := TDSExecuteThread.Create(Callback, Data);
if not TMonitor.Wait(Callback, 5000) then
ExecThread.Terminate;
Response := ExecThread.Response;
Комментариев нет:
Отправить комментарий