![]() |
Thread-Probleme
Morgen.
Ich hab hier grad ein paar richtig fiese Probleme. Wenn ich das richtig verstanden habe, laufen Indy-Server-Sockets in einem eigenen Thread. Dieser Thread ruft beim Dateneingang das Ereignis OnExecute auf, beim Connecten und Disconnecten auch bestimmte Ereignisse. Soo, und jetzt kommts: Ich will beim Disconnecten eine MessageBox anzeigen. Das Problem: showmessage ist ja mehr oder weniger eine GUI-Funktion und die soll man nunmal nur aus dem Hauptthread heraus aufrufen. Das sorgt natürlich dafür, dass meine Anwendung recht unschön mit diversen Exceptions röchelnd zugrunde geht. Genauergesagt, verschiedene Canvasses beschweren sich, dass ich nicht auf sie zeichnen darf oder sie zeichnen einfach an bestimmten Stellen ziemlichen Mist, der da eigentlich nichts verloren hat. Wie verhindere ich das am besten? |
Re: Thread-Probleme
ShowMessage aus einem Synchronize heraus aufrufen bzw. GUI kann man auch aus nem Thread heraus aufrufen, mit ShowMessage hatte ich noch keine Probleme, die kommen eher mit den VCL Komponenten des Hauptthreads.
|
Re: Thread-Probleme
Dieser Thread wird von den Indys kontrolliert...
Ich kann ihn nicht synchronisieren. Aber wenn ShowMessage noch geht, ist es ja in Ordnung... Trotzdem habe ich recht seltsame Probleme mit dem Neuzeichnen. |
Re: Thread-Probleme
Deffiniere.
Es kann aber auch an Delphis Struktur liegen, weil die Handles sich ständig ändern. Besonders beim Zeichnen in den Threads kenne ich diese Probleme, deshalb erstelle ich dafür eigene Canvas und Bitmaps, damit ich die Handles kontrollieren kann. |
Re: Thread-Probleme
Ich zeichne eigentlich nur im Hauptthread. Das Problem an der Sache ist nur, dass mir das Ding in meinem Canvas seltsamerweise EInvalidOperations liefert oder für einen Augenblick ohne ersichtlichen Grund ein lila Quadrat zeichnet.
|
Re: Thread-Probleme
Die Kompo selber zeichnet irgendwas irgendwo hin?
|
Re: Thread-Probleme
Ja, die hab ich geschrieben. :mrgreen:
Und die überzeichnet sich kurzzeitig selbst teilweise mit lila Farbe. |
Re: Thread-Probleme
Schon probiert, auf einem extra DC zu Zeichnen, bzw. dieses immer vor dem Zeichnen zu "holen" und danach zu "entlassen" (GetDC, ReleaseDC)?
Das hilft da meistens. |
Re: Thread-Probleme
Warum?
Ich zeichne nur in der Paint-Methode meiner Komponente. |
Re: Thread-Probleme
Weil, wenn in Threads gezeichnet wird da manches mal Probleme auftreten.
Jedenfalls ist das meine Erfahrung, nicht Delphi Handles zu verwenden um die Fehler zu vermeiden. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:14 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz