AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Omni BackgroundWorker / Schedule

Ein Thema von haentschman · begonnen am 29. Dez 2013 · letzter Beitrag vom 29. Dez 2013
Antwort Antwort
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.296 Beiträge
 
Delphi 12 Athens
 
#1

Omni BackgroundWorker / Schedule

  Alt 29. Dez 2013, 13:13
Moin Alle...

Gegeben:
- 1..n elektronische (Master)Geräte welche via HTTP ausgelesen werden
- jedes (Master)Gerät hat 1..256 Geräte. Diese wiederum haben 1..x auslesbare Parameter.

Soll:
- jeder auslesbare Parameter soll permanent ausgelesen werden. (Nacheinander)
- jedes (Master) Gerät parallel

Ist(Idee):
- jedes Mastergerät hat einen BackgroundWorker.
- Da werden die Geräteparameter als Items abgelegt und abgearbeitet.

Soweit so gut.

Problem:
Im Prinzip sollte die Menge an abrufbaren Parametern einen "Durchlauf" darstellen. Sind alle abgearbeitet geht es von vorn los.
1. Background Worker füllen
2. arbeiten lassen
3. Wenn fertig nach 1.

Wie kann ich die Menge an offenen Tasks im Schedule feststellen um bei 0 den Worker neu zu befüllen? Ich könnte mir vor dem Füllen das letzte Item merken und im OnRequest auswerten.
Gibt es da was besseres?

Danke
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.126 Beiträge
 
Delphi 10.3 Rio
 
#2

AW: Omni BackgroundWorker / Schedule

  Alt 29. Dez 2013, 14:18
Haussteuerung?

Ich würde die Worker einfach mitzählen. Oder habe ich da etwas falsch verstanden?

Mavarik
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.296 Beiträge
 
Delphi 12 Athens
 
#3

AW: Omni BackgroundWorker / Schedule

  Alt 29. Dez 2013, 14:57
Danke erstmal...
Zitat:
Haussteuerung?
...nö. Datenlogger in industrieller Größenordnung
Zitat:
Ich würde die Worker einfach mitzählen.
Ich verfeinere das nochmal an einem Beispiel...
1. Gehen wir davon aus, daß 10 Parameter permanent zu lesen sind. (Schleife mit Abbruchbedingung)
2. die 10 "Kommandos" werden in die Queue "geladen"
3. die 10 werden einer nach dem Anderen abgearbeitet
4. erst wenn die Queue leer ist -> Start wieder mit 2.

Da die Abfragezeit der einzelnen "Kommandos" incl. Request nicht definiert ist, kann man das befüllen der Queue nicht statisch steuern. (Timer etc.) Als "Startbedingung" (2.) wollte ich eine leere Queue definieren. Leider finde ich im Bachgroundworker keine Property o.ä. um diesen Zustand definieren zu können.
Jedes "Kommando" hat sein Event beim Beenden. Dieses ist für alle gleich. Anhand der Parameter im Event könnte ich das "Kommando" identifizieren. Wenn ich mir vorher beim Befüllen das letzte "Kommando" merke könnte ich hier dann auf eine leere Queue schließen.

Meine Frage ist, ob es andere Möglichkeiten gibt die ich nicht gesehen habe.

PS: workItem.Task.Counter ist nil Da dachte ich schon ich hätte was gefunden.
  Mit Zitat antworten Zitat
Benutzerbild von BUG
BUG

Registriert seit: 4. Dez 2003
Ort: Cottbus
2.094 Beiträge
 
#4

AW: Omni BackgroundWorker / Schedule

  Alt 29. Dez 2013, 15:05
Jedes "Kommando" hat sein Event beim Beenden. Dieses ist für alle gleich. Anhand der Parameter im Event könnte ich das "Kommando" identifizieren. Wenn ich mir vorher beim Befüllen das letzte "Kommando" merke könnte ich hier dann auf eine leere Queue schließen.
Die Idee, in diesem Event einfach eine Variable herunterzuzählen, ist dir nicht gekommen
Das Merken des letzten Kommandos halte ich gerade bei einem Workerpool für fehleranfällig, da es möglich währe, dass das Ende des letzten Kommandos das Vorletzte überholt.
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.296 Beiträge
 
Delphi 12 Athens
 
#5

AW: Omni BackgroundWorker / Schedule

  Alt 29. Dez 2013, 15:14
Zitat:
Die Idee, in diesem Event einfach eine Variable herunterzuzählen, ist dir nicht gekommen
Nö... Ein eigener Counter ist die Lösung. Ich dachte nur der BackgroundWorker hat ne Art Liste der Items öffentlich und damit den Count.
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.126 Beiträge
 
Delphi 10.3 Rio
 
#6

AW: Omni BackgroundWorker / Schedule

  Alt 29. Dez 2013, 15:51
Ich würde die Worker einfach mitzählen.
hmm... s.o.
  Mit Zitat antworten Zitat
Benutzerbild von BUG
BUG

Registriert seit: 4. Dez 2003
Ort: Cottbus
2.094 Beiträge
 
#7

AW: Omni BackgroundWorker / Schedule

  Alt 29. Dez 2013, 16:24
Deine Antwort war wohl ähnlich verständlich geschrieben wie die Frage
  Mit Zitat antworten Zitat
Antwort Antwort


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 14:11 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