Laden...

WPF - VB.NET - Ladevorgang / Ladebildschirm

Erstellt von _Cashisclay vor 8 Jahren Letzter Beitrag vor 8 Jahren 2.458 Views
_
_Cashisclay Themenstarter:in
277 Beiträge seit 2014
vor 8 Jahren
WPF - VB.NET - Ladevorgang / Ladebildschirm

Hallo Community,

ich bräuchte mal wieder eure Hilfe, euren Rat, eure Erfahrungen bzw herangehensweise an eine Idee.

Mittlerweile haben sich des öfteren in diversen Programmen bei mir eine gewisse Ladezeit durch Datenbankabfragen etc. eingeschlichen.

Nun möchte ich mir schon seit längerem eine Anzeige für die Ladezeit basteln.

Die Vorstellung dahinter ist eigentlich bei jedem Vorgang der etwas länger brauch zu laden eine Progressbar oder etwas ähnliches zu öffnen die Quasi in der Mitte der Anwendung angezeigt wird (über der Anwendung quasi) und die gesamte Anwendung dahinter ausgraut.

Ich hab mich schon diverse male versucht ein wenig zu informieren, nicht viel, weil ich nebenbei arbeite, aber ein wenig und schon oft das Thema Splashscreen gelesen.

Habt ihr persönlich sowas schon gebastelt, ist meine Idee so an sich umsetzbar (leicht?) oder gibt es leichtere Wege.

Grüße

EDIT : So ungefähr stell ich mir das vor :

6.911 Beiträge seit 2009
vor 8 Jahren

Hallo _Cashisclay,

das mit dem Ausgrauen der Anwendung im Hintergrund finde ich nicht so super -- das verbietet die Möglichkeit, dass der Benutzer zwischenzeitlich die Anwendung bedienen kann, denn auch z.B. ein Abbrechen sollte möglich sein.

Die Ladevorgänge sollten bzw. müssen asynchron passieren und zur Fortschrittsbenachrichtigung kannst du z.B. in die Statusleiste eine Anzeige, ProgressBar, Ampel, etc. setzen.

Aber die Anwendung sollte auf jeden Fall auch während des Ladens bedienbar bleiben.

Vllt. ist es auch gar nicht nötig soviele Daten aufeinaml zu laden, sondern zuerst nur die wichtigsten und dann -- nach Bedarf -- den Rest.

mfG Gü

Stellt fachliche Fragen bitte im Forum, damit von den Antworten alle profitieren. Daher beantworte ich solche Fragen nicht per PM.

"Alle sagten, das geht nicht! Dann kam einer, der wusste das nicht - und hat's gemacht!"

_
_Cashisclay Themenstarter:in
277 Beiträge seit 2014
vor 8 Jahren

Hallo gfoidl,

das mit dem ausgrauen wäre meiner Meinung nach nur eine von vielen Möglichkeiten, angenommen ich würde eine weiteres Fenster öffnen, wo der Ladevorgang irgendwie Transparent dargestellt wird, bzw allgemein einfach vor dem aktuellen Fenster sich befindet, finde ich das ausgrauen einen netten optischen Effekt.

An sich hab ich auch schon über eine Statusleiste etc. nachgedacht, ist aber irgendwie die "hässlichere" Variante.

Ich lade nicht sämtliche Daten, aktuell zum Beispiel muss der Benutzer eine Eingabe tätigen daraufhin werden ihm Daten zur Verfügung gestellt, der erste View der geladen wird, dauert nun mal 2 Minuten, daran kann man so auch nichts ändern. Ansonsten versteh ich deinen Ansatz.

5.299 Beiträge seit 2008
vor 8 Jahren

der erste View der geladen wird, dauert nun mal 2 Minuten, daran kann man so auch nichts ändern. Das glaub ich nicht.
Also ich zumindest fände sowas höchst unbefriedigend, und wie gesagt: ich glaub kaum, dass das wirklich nötig ist.
Weil wenn das Laden ordentlich gecodet ist, müsstest du da ja zig Megabyte laden, um auf solche Zeiten zu kommen.

Der frühe Apfel fängt den Wurm.

5.657 Beiträge seit 2006
vor 8 Jahren

Hi _Cashisclay,

vom programmtechnischen Standpunkt her, benötigt deine Anwendung eine Funktionalität, über die die Benutzeroberfläche darüber benachrichtigt wird, daß gerade eine langedauernde Aktion ausgeführt wird. Und alternativ eine Funktionalität zur Aktualisierung der Fortschrittsanzeige bzw. eine zum Abbrechen der Aktion. Das könnte über Event gelöst werden oder über Eigenschaften. Die eigentliche Aktion muß aber im Hintergrund ausgeführt werden, siehe dazu die FAQ: [FAQ] Warum blockiert mein GUI? oder [Artikel] Multi-Threaded Programmierung.

Vom User-Experience-Aspekt her muß man immer überlegen, ob es für den Benutzer in der bestimmten Situation hilfreich ist, bestimmte Informationen anzuzeigen oder auszublenden oder Aktionen zu deaktivieren. Sinnvoll ist es meistens, die Anwendung weiter bedienenbar zu lassen, während im Hintergrund eine Aktion ausgeführt wird. Wenn das aber nicht möglich ist (z.B. beim Speichern oder Neuladen von Daten), dann ist es genauso sinnvoll, die UI zu deaktivieren um den Benutzer darauf hinzuweisen.

Christian

Weeks of programming can save you hours of planning