Announcement

Collapse
No announcement yet.

Thread verursacht Fehler in Syncrinisize, wie kann man das verhindern

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Thread verursacht Fehler in Syncrinisize, wie kann man das verhindern

    Hallo miteinander,

    Ich habe ein TServerClientThread geschrieben, in dem ich ein Formular öffne um zu sehen was im
    Inneren des Threads so abläuft.
    Dazu habe ich am Anfang von ClientExecute das Formular mit 'new Form1' erzeugt. im weiteren
    Quelltext der Funktion werden Indormationen in das Formular geschrieben. Dazu muss eine
    eigene Funktion 'VisualForm1' bereitgestellt werden, die über Syncronisize aufgerufen wird.
    Am Ende von 'ClientExecute' wird das Formular deletet und auf NULL gesetzt. Dies läuft auch recht
    gut, nur wenn ich meinen Client schliesse, wird mein Thread auch automatisch geschlossen. Dabei
    entsteht in der Funktion 'VisualForm1' eine Zugriffsverletzung. Ich habe dann eine Überprüfung
    eingebaut, die kontrolliert, ob Form1 == NULL ist. Da wird erkannt, das Form1 nicht NULL ist, aber
    beim Zugriff auf das Formular (bzw. auf ein MemoFeld) entsteht die Zugriffsverletzung.

    Warum funktioniert das nicht richtig?

    MfG Olaf

  • #2
    Also was Du da zu tun versuchst verstehe ich zwar nicht, aber sämtliche Aktionen, die Du in Borland-Komponenten (TForm!) vornehmen willst, müssen über Syncronize durchgeführt werden. Eine Prüfung, ob der Zeiger gleich NULL ist, hat dahingehend keinen Sinn, daß die Forms Stück für Stück uihre untergeordneten Komponenten und deren Speicher freigeben. Wenn Du also prüfst, ob der Zeiger noch da ist, könnte es sein, daß das Formluar gerade dabei ist, seine Komponenten zu löschen, das Form selbst ist aber - und muß es auch sein - noch da

    Comment

    Working...
    X