Einzelnen Beitrag anzeigen

Kostas

Registriert seit: 14. Mai 2003
Ort: Gerstrhofen
1.062 Beiträge
 
Delphi 10 Seattle Enterprise
 
#7

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