Цикл зависания сервера Delphi Datasnap в Linux - PullRequest
0 голосов
/ 21 декабря 2018

Я пытаюсь перенести сервер Delphi Datasnap на Linux с Delphi Tokyo (10.2), и все кажется правильным, но если я установил событие OnDisconnect в TDSTCPServerTransport, программа войдет в бесконечный цикл.

Я пытаюсь использовать самый простой сервер моментальных снимков (только создать сервер с помощью мастера Delphi), и результат тот же.Здесь код dfm

 object ServerContainer1: TServerContainer1
  OldCreateOrder = False
  Height = 271
  Width = 415
  object DSServer1: TDSServer
    Left = 96
    Top = 11
  end
  object DSTCPServerTransport1: TDSTCPServerTransport
    Port = 13000
    Server = DSServer1
    Filters = <>
    OnDisconnect = DSTCPServerTransport1Disconnect
    Left = 96
    Top = 73
  end
  object DSServerClass1: TDSServerClass
    OnGetClass = DSServerClass1GetClass
    Server = DSServer1
    Left = 200
    Top = 11
  end
end

код события

procedure TServerContainer1.DSTCPServerTransport1Disconnect(
  Event: TDSTCPDisconnectEventObject);
begin
  writeln('XXXX');
end;

.dfm из ServerMethods (как мастер создания)

object ServerMethods1: TServerMethods1
  OldCreateOrder = False
  Height = 150
  Width = 215
end

и .pas

unit ServerMethodsUnit1;

interface

uses System.SysUtils, System.Classes, System.Json,
    Datasnap.DSServer, Datasnap.DSAuth;

type
{$METHODINFO ON}
  TServerMethods1 = class(TDataModule)
  private
    { Private declarations }
  public
    { Public declarations }
    function EchoString(Value: string): string;
    function ReverseString(Value: string): string;
  end;
{$METHODINFO OFF}

implementation

{%CLASSGROUP 'System.Classes.TPersistent'}

{$R *.dfm}


uses System.StrUtils;

function TServerMethods1.EchoString(Value: string): string;
begin
  Result := Value;
end;

function TServerMethods1.ReverseString(Value: string): string;
begin
  Result := System.StrUtils.ReverseString(Value);
end;

end.

При отключении клиента происходит событие.В конце я продолжаю отладчик и вижу, что при повторном вызове снова происходит событие и программа в цикле.Кто-нибудь может мне помочь?

На окнах все ок.Заранее спасибо.

...