如何在idHTTPServer上跟踪长时间运行的操作?

时间:2019-02-02 16:19:46

标签: delphi indy idhttp

我想通过ping从idHTTPClient跟踪idHTTPServer上长时间运行的操作。我将如何做更好的选择?我需要一些独特的东西。我尝试使用bind.id,但没有成功。

让我说,当线程启动工作时,我会给出一些独特的东西

procedure TRPTests.SomeServerJob;
var
  jo: ISuperObject;
begin
  TThread.CreateAnonymousThread(
    procedure()
    begin
      Sleep(3000);
    end).Start();

  jo := SO();
  jo.S['BindId'] := Context.Binding.ID.ToString;
  FResponses.OkWithJson(jo.AsJSon(false, false));
end;

稍后,我想检查作业是否完成或进度如何? 可以说我试图那样做

procedure TRPSystem.PingContext(aId: string);
var
  jo: ISuperObject;
  i: integer;
  r: boolean;
  someProgress: string;
begin
  with GetMain.Server.Contexts.LockList() do
  try
    for i := 0 to Count - 1 do
      if TIdContext(Items[i]).Binding.ID = aId.ToInteger then
      begin
        someProgress := '10 %';  // take progress param from my thread
        r := true;
        Break;
      end;
  finally
    GetMain.Server.Contexts.UnlockList();
  end;
  if r then
  begin
    jo := SO;
    jo.I['progress'] := someProgress;
    FResponses.OkWithJson(jo.AsJSon(false, false));
  end;
end;

是正确的方法还是更好地使用了另一种方法?

0 个答案:

没有答案