![]() |
Form.Update funktioniert nicht in einem Thread ?
Hallo,
ich habe einen kleinen nebenläufigen Thread erstellt, der mir immer ein Form aktualisieren soll. Im Thread selber gibt es einen Pointer (_form), der auf das jeweilige zu aktualisierende Form zeigt (mittels init-Routine draufgezeigt). im .Execute Steht
Delphi-Quellcode:
Der wird auch durchlaufen, nur leider ändert sich am Form nichts, ActiveX-Komponenten sind auch nicht drauf !
_Form.Update;
Sleep(10); Ich habe Delphi 7 Professional |
Re: Form.Update funktioniert nicht in einem Thread ?
Autsch. Direkte Zugriffe aus einem Thread auf VCL-Elemente sind nicht gut, da die VCL nicht threadsafe ist. Lies mal in der Hilfe, was da zu der Methode Synchronize von der Thread-Klasse steht.
|
Re: Form.Update funktioniert nicht in einem Thread ?
Hallo,
Synchronize(Form.Update) Und dann mal nen Breakpoint drauf. (in TForm). Heiko |
Re: Form.Update funktioniert nicht in einem Thread ?
Danke für den Tipp !
Aber es läuft leider noch nicht wie gewünscht: der Thread hängt am synchronize. (Delphi hält aber auch nicht an meinem Breakpoint im classes.synchronize) Also, mein Problem: - Es wird auf eine Eingabe gewartet (mittels sysutils.sleep) - Währenddessen soll man das Form bewegen, ziehen, schliessen,... können |
Re: Form.Update funktioniert nicht in einem Thread ?
Zitat:
|
Re: Form.Update funktioniert nicht in einem Thread ?
Warum verwendest Du überhaupt einen Thread, um auf eine Eingabe zu warten?
|
Re: Form.Update funktioniert nicht in einem Thread ?
Probiere doch mal das Ereignis OnChange Deines Edits....
Sherlock |
Re: Form.Update funktioniert nicht in einem Thread ?
Nein, anders:
* der Thread soll nur das Form updaten, um auf Eingaben daruf zu registrieren (z.B. beenden) * zur Zeit ist es so, dass wärhrend des sleep das Form nicht wiederkommt * das soll mit dem Thread verhindert werden * die Wartezeit liegt bei 1-5 Sekunden |
Re: Form.Update funktioniert nicht in einem Thread ?
Zitat:
|
Re: Form.Update funktioniert nicht in einem Thread ?
Also wenn du schon mit einem Thread arbeitest würde ich eine Semaphore verwenden anstatt des Sleeps. Aber davon unabhängig wäre etwas Quelltext interessant um dir helfen zu können. Alles andere ist nur ein Rätselraten. Und wenn dir das mit dem Snychronize noch nicht bekannt war, dann solltest du dir noch etwas Hintergrundwissen aneignen...
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:04 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-2025 by Thomas Breitkreuz