Einzelnen Beitrag anzeigen

DocE

Registriert seit: 25. Mär 2004
108 Beiträge
 
#1

Indy TIdHTTPServer OnGet: Aufruf von Funktionen mit Paramete

  Alt 29. Jun 2005, 20:38
Hallo zusammen!

Ich habe folgendes Problem:

Der Indy HTTP Server erstellt anscheinend für jede Verbindung einen eigenen Thread und übergibt diesen in z.B. OnCommandGet als AThread. Also müßte man mit Synchronize arbeiten. Wie übergebe ich jedoch mit Synchronize Parameter oder erhalte results? Ein einfaches Beispiel:

LoadMemo liegt auf dem Hauptformular, genau wie der HTTPServer.

Delphi-Quellcode:
  LoadMemo.Clear;
  LoadMemo.Lines.LoadFromFile('test.html');
  AResponseInfo.ContentText := LoadMemo.Text;
Dies führt jedoch zu Exceptions wie "Text überschreitet Memo-Kapazität". Daher müßte man dies mit AThread.Synchronize aufrufen. Wie kann ich ihm jedoch den Parameter ('test.html') übergeben und wie bekomme ich das entsprechende result (hier: LoadMemo.Text);

In diesem Fall kann man natürlich mit einem zur Laufzeit erzeugten TMemo arbeiten. Dies ist unproblematisch. Jedoch ist das Problem komplexer:

Ich führe je nach übergebenen "Document" eine bestimmte Prozedur/Funktion am Server aus, die u.a. mit Querys Datenbankoperationen durchführt. Da hier gelegentlich Fehler auftauchen, die ich mir nicht erklären kann, führe ich diese auf die Thread-Problematik zurück. Wie kann man also Prozeduren und Funktionen mit Parameter innerhalb dieses OnGet-Threads aufrufen?

Macht evtl. ein extra Formular Sinn, auf dem die Querys liegen und welches dann von jedem Thread zur Laufzeit dynamsich erzeugt (not visible), die entsprechenden Funktionen ausgeführt und anschließend freigegeben wird? Ist ein solches Formular dann "Thread sicher"?

Ich bin sicher, Ihr wißt eine Lösungsmöglichkeit.

Vielen Dank.

MfG
..DocE
  Mit Zitat antworten Zitat