Hallo.
Ich habe noch eine Frage zu
Indy (10).
Wie verwende ich das OnConnect-Event beim Server richtig?
Es handelt sich ja hier um einen Thread.
Ich möchte vom OnExecute-Event ein Event zu einer anderen
Unit werfen. Wenn ich das mache spinnt das Programm dannach
(es werden auf einmal Codezeilen übersprungen)
Ich habe im Internet ein Beispielprogramm gefunden, wo die Ausgabe synchronisiert wird.
Wenn ich die Ausgabe synchronisiere passiert das in der Event-Methode zwar nicht, dafür aber etwas später in einer aufgerufenen Methode.
Am besten ich zeig mal den Code:
Delphi-Quellcode:
//Das OnExecute-Event des Servers
procedure TIndyServer.IndyEvent(AContext: TidContext);
begin
self.FIndyString := AContext.Connection.IOHandler.ReadLn;
//Hier steht eine Abfrage ob die Daten gültig sind
//Event wird Synchronisiert in eine Hilfsmethode geworfen
(AContext.Yarn as TidYarnOfThread).Thread.Synchronize(self.ThreadEvent);
end;
//Die Hilfsmethode wirft das Event
procedure TIndyServer.ThreadEvent;
begin
self.FOnDaten(self.FIndyString);
end;
Wenn ich in der Methode, die das Event behandelt, jetzt andere Objekte erzeuge funktioniert das zwar (vorher spielte das Programm da verrückt), aber die erzeugten Objekte erzeugen selber auch wieder Objekte (u.a. ein
MsXML-Objekt).
Dabei spielt das Programm immer noch verrückt (sobald es das
MSXML-Objekt erzeugen soll überspringt es ein parr Zeilen).