AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Update-Vorgang in einen Thread auslagern

Ein Thema von mm1256 · begonnen am 18. Dez 2014 · letzter Beitrag vom 22. Dez 2014
Antwort Antwort
Seite 3 von 4     123 4   
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#21

AW: Update-Vorgang in einen Thread auslagern

  Alt 20. Dez 2014, 13:23
4. Observer-Pattern (@Sir Rufo, einverstanden?)
Heute ist der letzte Samstag der Woche? Ja, dann bin ich mal damit einverstanden
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
QuickAndDirty

Registriert seit: 13. Jan 2004
Ort: Hamm(Westf)
1.882 Beiträge
 
Delphi 12 Athens
 
#22

AW: Update-Vorgang in einen Thread auslagern

  Alt 20. Dez 2014, 13:34
Mich beschleicht langsam der Gedanke, dass ich mit einer separaten DLL, deren update-ausführende Routine ich in einem Thread lade, dem Ziel näher komme. Dann habe ich zwar keine Synchronisation, aber weniger (Speicher-)Probleme, und ich weiß am Ende der Installation auch, ob der Download läuft oder nicht. Wäre das nicht eine Alternative?
Das Problem ist ja, wenn es dann ein sehr langer download ist, weil z.B. gerade viel Bandbreite beim kunden für anderen Kram draufgeht. Wie oft haben selbst wir gedacht ein programm sei eingefroren, blos weil es keine Fortschrittsanzeige hat?

Es mag dich in keiner weise beeinflussen, aber ich finde es nicht notwendig parrallel updates runterzuladen. Ich mag alles schön der reihe nach. Es ist nur ein Setu. So oft macht man das nicht.

Wofür brachst du zum Starten eines downloads die Aufmerksamkeit des Benutzers?
Damit er sich auf einem Proxyanmeldet fals es sowas beim Kunden gibt?
Ich habe as Problem noch nicht vollständig erkannt dass du gedenkst mit einem parallel laufenden Download lösen zu wollen.
Man kann solche Downloads auf jeden Fall auch einfach in einem eigenen Prozess machen. Dann erübrigt sich die Thread-Problematik.
Andreas
Monads? Wtf are Monads?
  Mit Zitat antworten Zitat
Dejan Vu
(Gast)

n/a Beiträge
 
#23

AW: Update-Vorgang in einen Thread auslagern

  Alt 20. Dez 2014, 15:35
Mir ist es ein Rätsel, wieso man den Download nicht einfach in einen kleinen Thread packt und mit einer der vier vorgestellten Methoden im Formular rummalt. Das kann doch nun jeder. Oder hab ich etwas verpasst?
  Mit Zitat antworten Zitat
mm1256

Registriert seit: 10. Feb 2014
Ort: Wackersdorf, Bayern
640 Beiträge
 
Delphi 10.1 Berlin Professional
 
#24

AW: Update-Vorgang in einen Thread auslagern

  Alt 20. Dez 2014, 20:22
Hallo zusammen,

so, ich war den halben Tag beschäftigt meinen Code umzubauen und die andere Hälfte mit Einkaufen (mit Frau... ) und jetzt komme ich auch mal dazu, hier nachzuschauen was es neues gibt. Und war erst mal positiv überrascht von den vielen Antworten.

Also, Stand der Dinge: Zuerst war es von der Aufgabenverteilung so: Update-Form für das UI, eine Unit mit der Logik (Connect, Download, Disconnect, Installation der neuen programmdateien usw.) und das Datenmodul.

Das Datenmodul blieb bis auf ein paar kleine Änderungen wie es ist. Die Unit mit der Logik entfällt, die habe ich heute neu programmiert. Sie beinhaltet jetzt meinen Thread, der den Download durchführt.

Die Beispiele im WEB (nicht die von euch hier...die habe ich ja jetzt erst gelesen) hatten hinsichtlich der Synchronisierung eines gemeinsam: Der Thread muss mit dem aufrufenden Objekt kommunizieren, damit er z.B. die Fortschrittanzeige aktualisieren kann. So eine Vorgehensweise geht mir gegen den Strich. Der Thread soll sich um den Download kümmern müssen, und sonst nichts! Das war der Ansatz. Und, aktueller Stand, es funktioniert.

Das Installationsprogramm fordert irgendwann am Anfang die Eingabe der Lizenznummer. Dann wird die Lizenz vom WEB_Server heruntergeladen. Die Verbindung steht also zu dem Zeitpunkt schon. Normalerweise wird sie getrennt, und das Installationsprogramm fortgesetzt. Jetzt setze ich die Installation genauso fort, und starte den Thread.

Während der weiteren Installation (das Setup kopiert die Dateien usw.) lädt der Thread eventuell vorhandene aktuellere Dateien herunter.

Ist die Installation abgeschlossen, kann es im Großen und Ganzen nur zwei Zustände geben: Der Download-Thead arbeitet noch, oder ist schon fertig. Wenn er schon fertig ist, gibt (bzw. gab) es überhaupt keine Anforderung etwas zu synchronisieren, und wenn das Setup schon fertig ist und dann quasi auf den Thread warten muss...hat das Setup ja nichts mehr zu tun. Mit einem Timer frage ich dann die property "Progress" des Threads ab, aktualisiere den Progressbar in der MainForm, und warte bis der Thread fertig ist.

Exakt so verwendet dann später mein Update-Programm den Thread. Es sind darin nur noch ein paar Zeilen Code zu ändern. UI, Logik und Daten voneinander zu trennen hat sich wieder mal bewährt.

Das ist so einfach, dass ich mich im Nachhinein wundere, es nicht schon vorher so gemacht zu haben. Und die "Angst" vor Threads ist jetzt auch weg. Im Gegenteil, ich habe jetzt Lust auf mehr.

Zitat:
Die eigentliche Frage lauten: An welcher Stelle kommst Du nicht weiter?
Danke Mavarik, die Motivation es einfach noch mal zu versuchen, kam von dir.

Vielen Dank auch an alle die sich Mühe und Gedanken gemacht haben. Wie gesagt, es funzt momentan schon, aber ein paar kosmetische Kleinigkeiten sind noch zu erledigen. Und dann kommen ja noch ein paar neue Anforderungen auf mich zu.

Das Setup ist nämlich nicht nur für Installation und Deinstallation zuständig, auch für Datensicherung, Datenrücksicherung, PC-Umzug(Migration), Datenbankprüfung usw. Also noch genügend Potential für Threads, um zum Beispiel gleichzeitig mehrere Mandanten(-Datenbanken) zu sichern. BTW wenn es "nur" ein popeliges Installationsprogramm wäre, hätte ich es ja nicht selber geschrieben, sondern mit Inno gemacht.
Gruss Otto
Wenn du mit Gott reden willst, dann bete.
Wenn du ihn treffen willst, schreib bei Tempo 220 eine SMS
  Mit Zitat antworten Zitat
dGeek
(Gast)

n/a Beiträge
 
#25

AW: Update-Vorgang in einen Thread auslagern

  Alt 20. Dez 2014, 21:00
Ich habe den Updatevorgang in meiner Software auch in einen Thread ausgelagert.

Ganz klarer Vorteil:
- man kann ungestört weiterarbeiten und braucht die Software nicht erst zu beenden um einen "Update-Checker" zu starten.
Nach erfolgreichem Download der Updates muss man logischerweise die Software neu starten und ein kleiner "Client", wenn man denn so programmiert hat, muss die Updates installieren.
Aber immer noch, für mich, die beste Lösung.
  Mit Zitat antworten Zitat
mm1256

Registriert seit: 10. Feb 2014
Ort: Wackersdorf, Bayern
640 Beiträge
 
Delphi 10.1 Berlin Professional
 
#26

AW: Update-Vorgang in einen Thread auslagern

  Alt 20. Dez 2014, 21:06
...Nach erfolgreichem Download der Updates muss man logischerweise die Software neu starten und ein kleiner "Client", wenn man denn so programmiert hat, muss die Updates installieren.
Aber immer noch, für mich, die beste Lösung.
Nicht nur für dich Ich mache den Check wenn der User meine SW beendet: "Es steht eine neuere Version zur Verfügung. Die neuen Programmdateien wurden bereits im Hintergrund heruntergeladen und werden nun aktiviert...". Das Updaten dauert dann nur noch Sekunden.
Gruss Otto
Wenn du mit Gott reden willst, dann bete.
Wenn du ihn treffen willst, schreib bei Tempo 220 eine SMS
  Mit Zitat antworten Zitat
dGeek
(Gast)

n/a Beiträge
 
#27

AW: Update-Vorgang in einen Thread auslagern

  Alt 20. Dez 2014, 21:08
Sehr schön Solche Software mag ich. Für mich ist Usability das fast Wichtigste einer Software.
  Mit Zitat antworten Zitat
Dejan Vu
(Gast)

n/a Beiträge
 
#28

AW: Update-Vorgang in einen Thread auslagern

  Alt 21. Dez 2014, 14:29
Da wird ein Update installiert, ohne mich zu fragen ??? Das ist aber benutzerfreundlich.
  Mit Zitat antworten Zitat
mm1256

Registriert seit: 10. Feb 2014
Ort: Wackersdorf, Bayern
640 Beiträge
 
Delphi 10.1 Berlin Professional
 
#29

AW: Update-Vorgang in einen Thread auslagern

  Alt 21. Dez 2014, 16:41
Dich fragt ja auch keiner, oder hat keiner gefragt. Es ist vollkommend ausreichend, wenn ich meine Kunden um Erlaubnis frage.
Miniaturansicht angehängter Grafiken
screenshot.jpg  
Gruss Otto
Wenn du mit Gott reden willst, dann bete.
Wenn du ihn treffen willst, schreib bei Tempo 220 eine SMS
  Mit Zitat antworten Zitat
Dejan Vu
(Gast)

n/a Beiträge
 
#30

AW: Update-Vorgang in einen Thread auslagern

  Alt 21. Dez 2014, 16:44
Dich fragt ja auch keiner, oder hat keiner gefragt. Es ist vollkommend ausreichend, wenn ich meine Kunden um Erlaubnis frage.
  Mit Zitat antworten Zitat
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 22:14 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