AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Form.Update funktioniert nicht in einem Thread ?
Thema durchsuchen
Ansicht
Themen-Optionen

Form.Update funktioniert nicht in einem Thread ?

Ein Thema von Andy386 · begonnen am 18. Apr 2008 · letzter Beitrag vom 18. Apr 2008
Antwort Antwort
Seite 1 von 2  1 2      
Andy386

Registriert seit: 26. Mär 2008
55 Beiträge
 
#1

Form.Update funktioniert nicht in einem Thread ?

  Alt 18. Apr 2008, 10:09
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
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Form.Update funktioniert nicht in einem Thread ?

  Alt 18. Apr 2008, 10:12
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.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.270 Beiträge
 
Delphi 10.4 Sydney
 
#3

Re: Form.Update funktioniert nicht in einem Thread ?

  Alt 18. Apr 2008, 10:12
Hallo,

Synchronize(Form.Update)

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


Heiko
Heiko
  Mit Zitat antworten Zitat
Andy386

Registriert seit: 26. Mär 2008
55 Beiträge
 
#4

Re: Form.Update funktioniert nicht in einem Thread ?

  Alt 18. Apr 2008, 11:03
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
  Mit Zitat antworten Zitat
Benutzerbild von Dani
Dani

Registriert seit: 19. Jan 2003
732 Beiträge
 
Turbo Delphi für Win32
 
#5

Re: Form.Update funktioniert nicht in einem Thread ?

  Alt 18. Apr 2008, 11:33
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?
Dani H.
At Least I Can Say I Tried
  Mit Zitat antworten Zitat
Benutzerbild von rwachtel
rwachtel

Registriert seit: 26. Aug 2004
Ort: Köln
530 Beiträge
 
RAD-Studio 2010 Pro
 
#6

Re: Form.Update funktioniert nicht in einem Thread ?

  Alt 18. Apr 2008, 11:45
Warum verwendest Du überhaupt einen Thread, um auf eine Eingabe zu warten?
Robert Wachtel
  Mit Zitat antworten Zitat
Benutzerbild von Sherlock
Sherlock

Registriert seit: 10. Jan 2006
Ort: Offenbach
3.764 Beiträge
 
Delphi 11 Alexandria
 
#7

Re: Form.Update funktioniert nicht in einem Thread ?

  Alt 18. Apr 2008, 11:48
Probiere doch mal das Ereignis OnChange Deines Edits....

Sherlock
Oliver
  Mit Zitat antworten Zitat
Andy386

Registriert seit: 26. Mär 2008
55 Beiträge
 
#8

Re: Form.Update funktioniert nicht in einem Thread ?

  Alt 18. Apr 2008, 12:28
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
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#9

Re: Form.Update funktioniert nicht in einem Thread ?

  Alt 18. Apr 2008, 12:33
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.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
bepe

Registriert seit: 17. Okt 2006
118 Beiträge
 
#10

Re: Form.Update funktioniert nicht in einem Thread ?

  Alt 18. Apr 2008, 12:37
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...

mfg,
bp
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:31 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz