AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Projekte Workerthread: Der Diener im Hintergrund
Thema durchsuchen
Ansicht
Themen-Optionen

Workerthread: Der Diener im Hintergrund

Ein Thema von alzaimar · begonnen am 12. Jun 2007 · letzter Beitrag vom 23. Jun 2011
Antwort Antwort
Seite 8 von 8   « Erste     678   
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#1

Re: Workerthread: Der Diener im Hintergrund

  Alt 26. Aug 2009, 18:12
Hi,

der Job wird dann natürlich im Hauptthread ausgeführt. Ich verwende das z.B. für Jobs, die meine Controls aktualisieren: Ein Job (der im Hintergrund läuft) erzeugt dann zum Schluss einen synchronisierten Job, der irgendwelche Aktualisierungen im Formular durchführt.

Um das Ende aller Jobs mitzubekommen, kannst Du doch zum Schluss einen 'Ende-Job' in die Queue einfügen. Wenn das nicht geht, würde ich pollen. Woher soll der Pool auch wissen, das alle Jobs abgearbeitet wurden?

Mit Hilfe der TWorkerThread.Notify-Methode kann ein Job eine synchronisierte Nachricht verschicken. Diese wird über das ThreadPool.OnNotify-Ereignis verschickt. Siehe Demo.
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
Viktorii

Registriert seit: 19. Jul 2007
358 Beiträge
 
#2

Re: Workerthread: Der Diener im Hintergrund

  Alt 27. Aug 2009, 09:50
Moin zusammen.

Ich versuche gerade die Funktionsweise nachzuvollziehen und habe da ein paar Problem.

Ich hoffe die Frage ist jetzt nicht allzu blöd.

Wie kann die Execute Methode von TWorkerThread Parameter haben?

Execute wird ja nie direkt aufgerufen. Und trotzdem 'kennt' die Execute Methode aThread. Wie kann das also funktionieren?

Vielen Dank
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#3

Re: Workerthread: Der Diener im Hintergrund

  Alt 27. Aug 2009, 09:59
Zitat von Viktorii:
Wie kann die Execute Methode von TWorkerThread Parameter haben?
Die Execute-Methode des Workerthreads hat keine Parameter, sondern nur der Job. Der Job ist einfach nur eine Klasse, um eine einzelne Aufgabe zu kapseln.
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
doctor-x

Registriert seit: 29. Apr 2007
41 Beiträge
 
#4

AW: Workerthread: Der Diener im Hintergrund

  Alt 23. Mai 2011, 23:52
Hallo zusammen,

erst mal ein dickes Lob; TWorkerThreadPool finde ich eine echt klasse und einfach zu verwendende sache!

Habe dazu aber mal eine frage...

Wenn ich einen Job erstelle und starte, wie kann ich im Job auf ein schließen des Programms mit einem abbruch des Jobs reagieren ohne das ganze mit "Synchronized := True;" auszuführen?

Habe es mal mit "Synchronized := True;" und der abfage "Application.Terminated" gemacht, aber bei "Synchronized := False;" hab ich ja keinen sicheren zugriff auf den Main-Thread.

Habe ich irgenwie auf den Thread der meinen Job bearbeitet zugriff? (für die abfrage "Thread.Terminatd")

Danke schon mal im voraus!
Wolf
  Mit Zitat antworten Zitat
Thom

Registriert seit: 19. Mai 2006
570 Beiträge
 
Delphi XE3 Professional
 
#5

AW: Workerthread: Der Diener im Hintergrund

  Alt 23. Jun 2011, 17:25
Hallo alzaimar,

Danke für die Arbeit!
Da die Units aber nicht mehr ganz taufrisch sind, werden in der inc-Datei Delphi 2010 und Delphi XE (noch) nicht berücksichtigt, so daß keine Benennung der Threads erfolgt. Das hat zwar keinen Einfluß auf die Arbeit des Pools - mir ist das nur beim Debuggen meines Programmes aufgefallen, daß da was fehlt...
Thomas Nitzschke
Google Maps mit Delphi
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 8 von 8   « Erste     678   


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 23:57 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