AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Asynchron Dinge sammeln, in bestimmter Zeit

Ein Thema von Der schöne Günther · begonnen am 11. Jul 2017 · letzter Beitrag vom 17. Jul 2017
Antwort Antwort
Der schöne Günther

Registriert seit: 6. Mär 2013
6.216 Beiträge
 
Delphi 10 Seattle Enterprise
 
#1

AW: Asynchron Dinge sammeln, in bestimmter Zeit

  Alt 17. Jul 2017, 09:00
┴┬┴┤( ͡° ͜ʖ├┬┴┬
  Mit Zitat antworten Zitat
Fritzew

Registriert seit: 18. Nov 2015
Ort: Kehl
678 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Asynchron Dinge sammeln, in bestimmter Zeit

  Alt 17. Jul 2017, 14:39
Also mit dem Ansatz kommst Du nicht weit...

IFuture<t> funktioniert so nicht.
Wenn Du auf iFuture<t>.Value zugreifst wird gewartet bis der Thread beendet ist. Du müsstest auf jeden
Fall eine Abbruchbdingung haben.

In dem Fall würde ich mir einen TThread ableiten
Fritz Westermann
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.216 Beiträge
 
Delphi 10 Seattle Enterprise
 
#3

AW: Asynchron Dinge sammeln, in bestimmter Zeit

  Alt 17. Jul 2017, 14:47
Richtig, deshalb hole ich mir doch Value auch nur wenn Status = Completed , ansonsten fasse ich das Ding nicht an. Das war so meine Idee dabei.
  Mit Zitat antworten Zitat
Fritzew

Registriert seit: 18. Nov 2015
Ort: Kehl
678 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Asynchron Dinge sammeln, in bestimmter Zeit

  Alt 17. Jul 2017, 15:10
Ist dennoch der falsche Ansatz denke ich. Future ist nicht für sowas gedacht.....
Dann kommt noch dazu dass Du das System unnötig belastet, da alle tasks ja trotzdem bis zum ende weiterlaufen.
Baue Dir eine eigene Threadklasse die das sauber handelt.
Fritz Westermann
  Mit Zitat antworten Zitat
Glados
(Gast)

n/a Beiträge
 
#5

AW: Asynchron Dinge sammeln, in bestimmter Zeit

  Alt 17. Jul 2017, 15:25
Zitat:
Ist dennoch der falsche Ansatz denke ich. Future ist nicht für sowas gedacht.....
Wäre Future denn für so etwas geeignet?

Delphi-Quellcode:

 aFutureTasks := [TTask.Run(
    procedure
  begin
   Sleep(1000); // Arbeit 1
  end)];

 TTask.WaitForAll(aFutureTasks); // warten, bis alle fertig sind.
Ich verwende für solche Fälle immer eine Boolsche Variable die vor TTask.Run False ist, am Ende von TTask Run True und nach TTask run kommt eine while-Schleife.

Geändert von Glados (17. Jul 2017 um 15:41 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort

 
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 04:48 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