Registriert seit: 14. Mai 2003
Ort: Gerstrhofen
1.099 Beiträge
Delphi 10 Seattle Enterprise
|
Grundsatzfrage zu Thread und Sequenziell abarbeiten
27. Dez 2016, 13:05
Hallo Zusammen,
vorab erwähnt, ich habe kaum Erfahrung mit Threads da ich sie bis jetzt nicht gebraucht habe.
Die Kernfrage: wie können Threads eingesetzt werden wenn der Ablauf zwingend Sequenziell sein muss?
In einer Anwendung wir ein neuer Auftrag angelegt. Direkt danach wird die Auswahl der Kundschaft geöffnet um einen Kunden in den Auftrag zu übernommen. Jetzt kann ich die Artikelauswahl öffnen um einen Artikel in den Auftrag einzulesen. Dabei werden Kundenspezifische Preise ermittelt und in den Auftrag aufgenommen.
Die Sequenz ist also zwingend erforderlich:
1-Neuer Auftrag
2-Kunde auswählen
3-Artikel auswählen
4-Kudenpreis ermittelt(Kunde+Artikel)
In einer Windows Anwendung im LAN ist das auch überhaupt kein Problem. Die selbe Anwendung in einer Adroid App ist sehr wohl ein Problem. Bei Punkt 1 neuer Auftrag anlege geht noch. Bei Punkt 2 kann die Abfrage der Kunden nach den Suchkriterien schon etwas länger dauern. Wenn den Download der Kundenliste länger dauert im Main Thread würde Android die App beenden oder gar das Device neue Starten. Also packe ich den Download in ein Anonymus Thread.
Hier beginnt mein Verständnisproblem.
Eigentlich muss die Anwendung warten bis die Liste der Kunden vollständig geladen ist.
Direkt nach dem Download wir die Liste ausgewertet, bestimmte Kunden werden Fett markiert andere Rot wenn Sie schlecht Zahlen u.s.w. All das passiert nachdem die Kunden abgerufen wurden. Erst danach darf der Anwender den Kunden auswählen zur Übernahme in den Auftrag. Man könnte jetzt die Nachbearbeitung in den gleichen Download Thread packen dann wird wenigstens dieser Teil sequenziell abgearbeitet. Praktisch ist das jedoch nicht. Für Auswertungen wird der gleiche Download der Kunden benötigt jedoch nicht die Nacharbeit. Das könnte man jetzt wieder aufteilen u.s.w.
Wie kann ich z.B.: verhindern dass der Anwender versucht den Artikel auszuwählen währen die Kundenliste noch nicht da ist. Der Download läuft ja in einem anderen Thread und der Main Thread ist wieder frei. Somit kann der Anwender rumhantieren.
Gruß Kostas
|