Einzelnen Beitrag anzeigen

McMorton

Registriert seit: 8. Mär 2006
45 Beiträge
 
#1

Indy: Wie OnExecute Synchronisieren?

  Alt 30. Mär 2006, 21:28
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).
  Mit Zitat antworten Zitat