AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Algorithmen, Datenstrukturen und Klassendesign Grundsatzfrage zu Thread und Sequenziell abarbeiten

Grundsatzfrage zu Thread und Sequenziell abarbeiten

Ein Thema von Kostas · begonnen am 27. Dez 2016 · letzter Beitrag vom 27. Dez 2016
Antwort Antwort
Der schöne Günther

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

AW: Grundsatzfrage zu Thread und Sequenziell abarbeiten

  Alt 27. Dez 2016, 12:28
Zitat:
Erst danach darf der Anwender den Kunden auswählen zur Übernahme in den Auftrag.
Ohne dein Konzept hinterfragen zu wollen (wenn die Datenmenge so groß ist, warum dann z.B. nicht vorher filtern lassen oder seitenweise übertragen) - Wenn der Anwender erst weitermachen darf wenn alles übertragen ist, dann ist das halt so - Bei Windows schaust du auf eine Sanduhr, auf Handy-Apps meistens auf einen Fullscreen-Kreisel und wartest.

Der einzige Unterschied ist hier nur dass Systeme wie Android oder iOS lange nicht so gnädig sind wie Windows und deine Anwendung hart abschießen wenn der Hauptthread nicht mehr reagiert. Also musst du das Suchen in einen Thread oder Task packen, diesen starten und dann eine Sanduhr anzeigen. Die Bedienelemente werden ausgegraut (Enabled = False). Vielleicht noch einen "Abbrechen"-Button.

Wenn der Thread/Task fertig ist, blendest du das "Bitte warten" wieder aus, die Liste wird gefüllt und der Nutzer kann weitermachen.

Oder habe ich mir das jetzt zu einfach vorgestellt?
  Mit Zitat antworten Zitat
a.def
(Gast)

n/a Beiträge
 
#2

AW: Grundsatzfrage zu Thread und Sequenziell abarbeiten

  Alt 27. Dez 2016, 12:30
Da ich mich aktuell selbst auch damit beschäftige..
wäre hier TTask nicht relativ gut einsetzbar?

Parallelisierung mit Delphis Parallel Library - Parallele Tasks ausführen
  Mit Zitat antworten Zitat
Kostas

Registriert seit: 14. Mai 2003
Ort: Gerstrhofen
1.117 Beiträge
 
Delphi 12 Athens
 
#3

AW: Grundsatzfrage zu Thread und Sequenziell abarbeiten

  Alt 27. Dez 2016, 13:24
Hallo Zusammen,

herzlichen Dank für die rege Teilnahme. Natürlich ist das nur ein Beispiel und das Problem zu verdeutlichen. Der Anwender bekommt Filterkriterien, doch auch die können wenn Sie unsinnig sind Unsinn liefern der lange dauert.

Ich habe ein paar Dokumente gelesen über Threads, und auch es ein OnTerminate gibt womit ich informiert werden dass es weiter gehen kann. Doch das alles ist um ein so viel höherer Aufwand und undurchsichtig das ich mir die Frage stelle, kann das wirklich sein oder übersehe ich da etwas wesentliches. Ich kann nicht abschätzen bei einer Mobilen Anwendung wie lange etwas dauern wird da dazwischen ja noch die unstabile Internetverbindung eine gewaltige Rolle spielt. Also muss ich jede Kleinigkeit die vom Server über das Internet abgerufen wird, in ein Thread packen.

Ist der folgende Denkansatz richtig:
Alle Methoden sind erst einmal ohne Thread damit Sie mehrfach verwendet werden können. Bleiben wir mal beim Download der Kunden und das anschließende bearbeiten der Daten.

Delphi-Quellcode:
  TThread.CreateAnonymousThread(procedure ()
  begin
    //Alles was nicht die VCL benötigt
    //wird hier abgearbeitet.
    //Hier könnte der KundenDownload stehen.

    TThread.Synchronize (TThread.CurrentThread,
      procedure ()
      var ADataSetList: TFDJSONDataSets;
      begin

        //Sobald die VCL benötigt wird, muss der Thread syncronisiert werden
        //Wenn der Vorgang länger dauern würde, was würde Android hier machen?
        //Wieder die App beenden oder das Device reseten oder gilt das nur für den Main Thread?

        ADataSetList := KundenDownload(FilterKriterien);
        if (Assigned(ADataSetList) and
            (TFDJSONDataSetsReader.GetListCount(ADataSetList)>0))
        then KundendatenVerarbeiten(ADataSetList);
      end);
  end).Start;
Hier wird der Download und das Verarbeiten in einem Thread zusammengefasst und kann dabei da es Synchronisiert ist auch auf die VCL zugreifen. Darf jetzt dieser Thread beliebig lange laufen oder gilt das nur für den Bereich im AnonymousThread?

Gruß Kostas
  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 23:07 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