Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Form.Update funktioniert nicht in einem Thread ? (https://www.delphipraxis.net/112298-form-update-funktioniert-nicht-einem-thread.html)

Andy386 18. Apr 2008 10:09


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:
      _Form.Update;
      Sleep(10);
Der wird auch durchlaufen, nur leider ändert sich am Form nichts, ActiveX-Komponenten sind auch nicht drauf !

Ich habe Delphi 7 Professional

Luckie 18. Apr 2008 10:12

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.

hoika 18. Apr 2008 10:12

Re: Form.Update funktioniert nicht in einem Thread ?
 
Hallo,

Synchronize(Form.Update)

Und dann mal nen Breakpoint drauf. (in TForm).


Heiko

Andy386 18. Apr 2008 11:03

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

Dani 18. Apr 2008 11:33

Re: Form.Update funktioniert nicht in einem Thread ?
 
Zitat:

Zitat von Andy386
Es wird auf eine Eingabe gewartet (mittels sysutils.sleep)

Warum startest du den Thread nicht erst dann, wenn eine Eingabe da ist?

rwachtel 18. Apr 2008 11:45

Re: Form.Update funktioniert nicht in einem Thread ?
 
Warum verwendest Du überhaupt einen Thread, um auf eine Eingabe zu warten?

Sherlock 18. Apr 2008 11:48

Re: Form.Update funktioniert nicht in einem Thread ?
 
Probiere doch mal das Ereignis OnChange Deines Edits....

Sherlock

Andy386 18. Apr 2008 12:28

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

Luckie 18. Apr 2008 12:33

Re: Form.Update funktioniert nicht in einem Thread ?
 
Zitat:

Zitat von Andy386
Aber es läuft leider noch nicht wie gewünscht: der Thread hängt am synchronize.

Logisch weil die Methode in Synchronzi im Kontext des Hauptthreads ausgeführt wird. Steht aber mit Sicherheit auch in der Delphi Hilfe.

bepe 18. Apr 2008 12:37

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.
Seite 1 von 2  1 2      

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