AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Code vom Thread in einen Timer umziehen?
Thema durchsuchen
Ansicht
Themen-Optionen

Code vom Thread in einen Timer umziehen?

Ein Thema von Jim Carrey · begonnen am 25. Okt 2016 · letzter Beitrag vom 25. Okt 2016
Antwort Antwort
Seite 5 von 6   « Erste     345 6      
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.622 Beiträge
 
Delphi 12 Athens
 
#41

AW: Code vom Thread in einen Timer umziehen?

  Alt 25. Okt 2016, 15:35
Die GUI kann aber doch genauso gut auswerten, ob es gerade 1000 von 10000 Schritten sind, sie muss sich ja nicht jedes Mal aktualisieren.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.343 Beiträge
 
Delphi 11 Alexandria
 
#42

AW: Code vom Thread in einen Timer umziehen?

  Alt 25. Okt 2016, 15:37
@Jim, ja, Dich meinte ich.


In welcher For-Schleife?

Wenn ein Thread eine Aufgabe erledigt brauchst Du eigentlich keine For-Schleife.
Und welche Aufgabe hast Du 10.000 Mal durchführen lassen und hast Du auch die Progressbar 10.000 mal neu zeichnen lassen?

Dann lass einfach nur jeden 100. Durchgang die Progressbar aktualisieren.
Dann bist Du in 100 Schritten bei 100% und gut ist.

Willst Du mal ein kleines Demoprojekt basteln und hier anhängen?
Ich denke, das lohnt sich, weil sich das bestimmt noch etwas ordnen ließe...
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
Jim Carrey
(Gast)

n/a Beiträge
 
#43

AW: Code vom Thread in einen Timer umziehen?

  Alt 25. Okt 2016, 15:42
Zitat:
Wenn ein Thread eine Aufgabe erledigt brauchst Du eigentlich keine For-Schleife.
Und welche Aufgabe hast Du 10.000 Mal durchführen lassen und hast Du auch die Progressbar 10.000 mal neu zeichnen lassen?
hat schon alles seine Richtigkeit, keine Sorge.
Vorher habe ich bei jedem for-Durchgang aktualisiert. Davon wollte ich nur weg und es einfacher haben.

Zitat:
Willst Du mal ein kleines Demoprojekt basteln und hier anhängen?
Ich denke, das lohnt sich, weil sich das bestimmt noch etwas ordnen ließe...
Ich versuche es mal auf die Schnelle
  Mit Zitat antworten Zitat
Jim Carrey
(Gast)

n/a Beiträge
 
#44

AW: Code vom Thread in einen Timer umziehen?

  Alt 25. Okt 2016, 16:22
Hier eine kleine Demo.
Die Demo ist echt unschön gemacht zeigt aber vom PRINZIP her was ich meine.
Angehängte Dateien
Dateityp: zip TestProjekt.zip (721,7 KB, 10x aufgerufen)
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.343 Beiträge
 
Delphi 11 Alexandria
 
#45

AW: Code vom Thread in einen Timer umziehen?

  Alt 25. Okt 2016, 16:35
Schaue ich mir heute Abend mal an...
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
Jim Carrey
(Gast)

n/a Beiträge
 
#46

AW: Code vom Thread in einen Timer umziehen?

  Alt 25. Okt 2016, 16:39
Danke. Und bitte hau mich nicht dafür
Wie gesagt ist es sehr dreckig gemacht drum herum. Das Wichtige sind nur die beiden Execute-Prozeduren in beiden Threads. Der Rest (was wie wo deklariert wird) ist dreckig und unwichtig.
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#47

AW: Code vom Thread in einen Timer umziehen?

  Alt 25. Okt 2016, 18:49
Und warum keine Message senden wenn es was anzuzeigen gibt?
Wenn die Oberfläche Zeit hat was anzuzeigen wird sie das auch tun, da kann man sich das ganze Polling/Timer-Zeug sparen.

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.343 Beiträge
 
Delphi 11 Alexandria
 
#48

AW: Code vom Thread in einen Timer umziehen?

  Alt 25. Okt 2016, 18:56
Ich wollte gerade mal ein Beispiel mit einem Event machen.
Das Projekt lässt sich aber mit meinem XE3 nicht kompilieren - bricht einfach hart ab.

Welches Delphi nutzt Du?
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
einbeliebigername

Registriert seit: 24. Aug 2004
140 Beiträge
 
Delphi XE8 Professional
 
#49

AW: Code vom Thread in einen Timer umziehen?

  Alt 25. Okt 2016, 19:10
Hallo,

Und bitte hau mich nicht dafür
ich muss dich leider hauen. Die TForm1.LongDelay und vorallem deren Aufruf aus TArbeiterThread.Execute geht einfach garnicht. Wozu das unbenannte Event, welches nur in der Methode existiert? Dann wird Application.ProcessMessages aus einem Thread aufgerufen, was mitunter das Potenzial hat, die gesammte Anwendung zuzerlegen.

Wenn man in einem Thread unter ca. 20ms (siehe unten) warten will, benutzt man sleep. Will man länger warten benutzt man eines der WaitFor-Angebote vom System, unter benutzen eines Terminate-Events.

Zu den 20ms: Den genauen Wert weis ich aktuell nicht. Aber es gibt bei den WaitFor... beim TimeOut eine untere Grenze, bei deren Unterschreitung die Zeit nicht mehr eingehalten wird.
Mit freundlichen Grüßen, einbeliebigername.
  Mit Zitat antworten Zitat
Jim Carrey
(Gast)

n/a Beiträge
 
#50

AW: Code vom Thread in einen Timer umziehen?

  Alt 25. Okt 2016, 20:04
Hallo,

Und bitte hau mich nicht dafür
ich muss dich leider hauen. Die TForm1.LongDelay und vorallem deren Aufruf aus TArbeiterThread.Execute geht einfach garnicht. Wozu das unbenannte Event, welches nur in der Methode existiert? Dann wird Application.ProcessMessages aus einem Thread aufgerufen, was mitunter das Potenzial hat, die gesammte Anwendung zuzerlegen.

Wenn man in einem Thread unter ca. 20ms (siehe unten) warten will, benutzt man sleep. Will man länger warten benutzt man eines der WaitFor-Angebote vom System, unter benutzen eines Terminate-Events.

Zu den 20ms: Den genauen Wert weis ich aktuell nicht. Aber es gibt bei den WaitFor... beim TimeOut eine untere Grenze, bei deren Unterschreitung die Zeit nicht mehr eingehalten wird.
Seid nicht so hart zu mir. Ich sagte doch das war einfach nur dahin geklatsch.

Zum Thema Delay und Thread, guck mal hier: Delay von negaH

Zitat:
Welches Delphi nutzt Du?
Die Demo hab ich mit XE2 gemacht, habe aber auch XE3.

Zitat:
Und warum keine Message senden wenn es was anzuzeigen gibt?
Wenn die Oberfläche Zeit hat was anzuzeigen wird sie das auch tun, da kann man sich das ganze Polling/Timer-Zeug sparen.
Dann brauche ich den zweiten Thread aber trotzdem. Denn er wäre es ja, der die Message sendet.

Geändert von Jim Carrey (25. Okt 2016 um 20:09 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 5 von 6   « Erste     345 6      


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 06:28 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