Einzelnen Beitrag anzeigen

Schokohase
(Gast)

n/a Beiträge
 
#7

AW: Nur nacheinander abarbeiten bei http get

  Alt 9. Mär 2019, 23:51
Die einfachste Art wäre die Verwendung von System.TMonitor .
Delphi-Quellcode:
type
  TForm1 = class(TForm)
    IdHTTPServer1: TIdHTTPServer;
    procedure IdHTTPServer1CommandGet(AContext: TIdContext; ARequestInfo:
        TIdHTTPRequestInfo; AResponseInfo: TIdHTTPResponseInfo);
  private
    FLock: TObject;
  public
    constructor Create(AOwner: TComponent); override;
    destructor Destroy; override;
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

constructor TForm1.Create(AOwner: TComponent);
begin
  inherited;
  FLock := TObject.Create;
end;

destructor TForm1.Destroy;
begin
  FreeAndNil(FLock);
  inherited;
end;

procedure TForm1.IdHTTPServer1CommandGet(AContext: TIdContext; ARequestInfo:
    TIdHTTPRequestInfo; AResponseInfo: TIdHTTPResponseInfo);
begin
  System.TMonitor.Enter(FLock);
  try

    // hier jetzt die Abfragen bearbeiten

  finally
    System.TMonitor.Exit(FLock);
  end;
end;
Eine CriticalSection würde auch funktionieren, aber System.TMonitor ist da performanter.

Wenn du auf die GUI zugreifen musst (wieso überhaupt) dann musst du natürlich noch mit dem MainThread synchronisieren.

Geändert von Schokohase (10. Mär 2019 um 00:02 Uhr)
  Mit Zitat antworten Zitat