Warum dauert „Noch 1 Sekunde“ so lange? — Wie Fortschrittsbalken und Zeitschätzungen funktionieren

· Aktualisiert am: · · Windows, Fortschrittsbalken, Verbleibende Zeit, UI, Leistung

Sie sehen seit 30 Sekunden „Noch 1 Sekunde“. Gerade als Sie mit dem Ende rechnen, wechselt die Anzeige auf „Noch 2 Minuten“.

Dateikopien, Anwendungsinstallationen, Videoexporte: Fortschrittsbalken sind nützlich, aber manchmal scheinen sie in einer anderen Welt als die Uhr zu arbeiten.

Tatsächlich gilt: Ein Fortschrittsbalken ist keine Uhr. Der Prozentsatz beschreibt, wie viel Arbeit erledigt ist; die Zeitschätzung sagt vorher, wie lange die restliche Arbeit dauern könnte; Abschluss bedeutet, dass die erforderlichen Vorgänge erfolgreich waren. Diese drei Begriffe zu trennen verändert, wie Sie eine Aufgabe lesen, die bei 99 % nicht fertig wird.

Dieser Artikel erklärt die allgemeinen Mechanismen anhand der Windows-API- und UI-Dokumentation. Er analysiert nicht den internen Algorithmus einer bestimmten Explorer-Version. Die Zahlenbeispiele und die Vergleichsdemo verwenden fiktive Arbeitslasten, keine Messungen an einem PC oder einer Netzwerkverbindung.

1. Fragen Sie zuerst: 100 % wovon?

Stellen Sie sich vor, Sie prüfen 100 Dokumente. Sind 99 davon kurze Notizen und das letzte ein langer Vertrag, kann „99 Dokumente erledigt“ zutreffen, ohne „99 % der Zeit sind vergangen“ zu bedeuten.

Auch eine Fortschrittsanzeige ändert ihre Bedeutung je nach Nenner.

Messgrundlage Was 50 % bedeuten Was diese Zahl allein nicht sagt
Dateianzahl Die Hälfte der Zieldateien ist verarbeitet Größe oder Verarbeitungszeit der restlichen Dateien
Datenmenge Die Hälfte der Zielbytes ist verarbeitet Künftige Geschwindigkeit oder Stufen jenseits der Übertragung
Gewichtete Stufen Die Hälfte der zugewiesenen Gewichte ist erledigt Ob diese Gewichte zur tatsächlichen Dauer dieses Laufs passen

Der Fortschrittsrückruf der Windows-API CopyFileEx etwa erhält die Gesamtdateigröße und die übertragenen Bytes. Diese beschreiben Arbeit, keine künftigen Sekunden. 1

Fortschrittsprozentsatz, verbleibende Zeit und AbschlussDie Abbildung trennt ein aus erledigter Arbeit berechnetes Verhältnis, eine auf einer angenommenen Geschwindigkeit beruhende Zeitschätzung und einen durch erfolgreiche Ergebnisse belegten Abschluss.Erledigte und gesamte ArbeitFortschrittsprozentsatzRestarbeit und vorhergesagte GeschwindigkeitGeschätzte verbleibende ZeitErforderliche Vorgänge sind erfolgreichGesamtaufgabe abgeschlossen

Abbildung 1: Ein Verhältnis, eine Vorhersage und ein Ergebnis sind nicht drei Namen für dieselbe Information.

In diesem Artikel bezeichnet Fortschrittsprozentsatz den Anteil messbarer erledigter Arbeit, Fortschrittsbalken dessen grafische Anzeige und geschätzte verbleibende Zeit die vorhergesagte Dauer. Keine verlässliche Vorhersage treffen zu können löscht nicht den bereits gemessenen Fortschritt.

In der Abbildung kennzeichnet eine durchgezogene Linie eine stets geltende Beziehung und eine gestrichelte Linie eine bedingte (die Bedingungen stehen bei jeder Beziehung auf der Detailseite). Die vollständige Liste der Beziehungen (9 insgesamt, mit Beleg und Sicherheitsgrad) und die Definitionen der wichtigsten Konzepte sind auf der Detailseite der Wissenskarte (auf Japanisch) zusammengestellt. Daten: JSON-LD / Turtle

2. Wie aus 10 verbleibenden Sekunden 79 werden

Die einfachste Schätzung nutzt diese Gleichung:

Verbleibende Zeit ≈ Restarbeit ÷ geschätzte künftige Verarbeitungsgeschwindigkeit

Das Schwierige ist nicht die Division. Es ist, dass die künftige Geschwindigkeit noch nicht beobachtet wurde. Deshalb nutzen wir die vergangene Geschwindigkeit, um sie vorherzusagen. In einer Erklärung zu Kopierzeitschätzungen von 2004 beschrieb Raymond Chen von Microsoft genau diese Schwierigkeit, die Zukunft vorherzusagen. Jener Artikel ist keine Spezifikation der in heutigen Windows-Versionen verwendeten Berechnung. 2

Betrachten Sie eine fiktive Kopie von 1.000 MiB. Ein MiB sind 1.048.576 Bytes. Nehmen Sie an, sie läuft zunächst 2,5 Sekunden konstant mit 80 MiB/s und wird dann für die nächste Sekunde auf 10 MiB/s langsamer.

Beobachtung Übertragen Verbleibend Für die Schätzung genutzte Geschwindigkeit Verbleibende Zeit
2,5 Sekunden nach dem Start 200 MiB 800 MiB 80 MiB/s 800 ÷ 80 = 10 Sekunden
3,5 Sekunden nach dem Start 210 MiB 790 MiB 10 MiB/s 790 ÷ 10 = 79 Sekunden

Die Aufgabe ist in dieser Sekunde vorangekommen. Dennoch ist die geschätzte Geschwindigkeit für die Restarbeit auf ein Achtel des vorherigen Werts gefallen, sodass die vorhergesagte Dauer steigt. Dieses Beispiel nutzt unmittelbar die Geschwindigkeit aus dem letzten Beobachtungsintervall.

Warum die verbleibende Zeit steigen kann, während die Arbeit vorankommtFällt die vorhergesagte Geschwindigkeit stark genug, überwiegt ihre Wirkung die Verringerung der Restarbeit und die berechnete verbleibende Zeit steigt.10 MiB in einer Sekunde erledigtWeniger Arbeit verbleibtVorhergesagte Geschwindigkeit fällt starkVerbleibende Zeit kann steigen

Abbildung 2: Eine steigende Zeitschätzung bedeutet nicht, dass der Vorgang rückwärtsgelaufen ist.

Dasselbe gilt für „Noch 1 Sekunde“. Eine Menge, die bei der vorherigen Geschwindigkeit eine Sekunde bräuchte, dauert länger, wenn der nächste Vorgang langsamer ist. Auch Beobachtungsintervalle und Rundung wirken sich auf die Anzeige aus. Eine Zahl, die sich nie ändert, sollte aber nicht einfach als normal gelten: Unterscheiden Sie, wie unten besprochen, Verarbeitungsstufen, UI-Aktualisierungen und tatsächliche Stillstände.

3. Würde ein Mittelwert die Schätzung genau machen?

Bilden Sie jede kurze Geschwindigkeitsänderung ab, springt die Schätzung auf und ab. Nutzen Sie nur den Mittelwert seit dem Start, kann eine anfangs schnelle Phase die Schätzung noch lange nach einer anhaltenden Verlangsamung optimistisch halten.

Das folgt daraus, wie Beobachtungen zusammengeführt werden. Nehmen wir an, wir gewichten eine vorherige Geschwindigkeit von 80 und eine neue von 10 gleich. Die vorhergesagte Geschwindigkeit wird 45. Sie ändert sich weniger abrupt als eine Schätzung allein aus dem letzten Wert 10, doch wenn die Geschwindigkeit wirklich bei 10 bleibt, ist sie eine Weile zu optimistisch. Glätte und Reaktionsfähigkeit auf Änderungen sind verschiedene Ziele.

Die Abwägung beim Glätten von GeschwindigkeitsschätzungenJüngere Beobachtungen stärker zu gewichten macht die Schätzung reaktionsfähig, aber schwankend, die Historie stärker zu gewichten macht sie glatter, aber träger.GeschwindigkeitsbeobachtungenMehr Gewicht auf jüngere DatenMehr Gewicht auf die HistorieReaktionsfähig, aber schwankendGlatt, aber träger

Abbildung 3: Eine ruhig wirkende Zahl ist nicht zwangsläufig eine genaue Vorhersage.

Das ist ein Beispiel zum Nachdenken über Schätzungen, keine Beschreibung eines bestimmten Produkts. Meine Entwurfsempfehlung lautet, unmittelbar nach dem Start oder einem Stufenwechsel keinen Countdown zu erzwingen. Warten Sie auf brauchbare Beobachtungen und zeigen Sie dann eine Schätzung wie „etwa eine Minute“. Zu sagen, dass die Schätzung neu berechnet wird, kann weniger irreführend sein, als ein unbelegtes „Noch 1 Sekunde“ stehen zu lassen.

4. 99 Dateien fertig, aber nur 9,9 % der Daten

Betrachten Sie nun die gezählte Einheit statt der Geschwindigkeit. Es gibt 100 Dateien: die ersten 99 mit je 1 MiB und die letzte mit 901 MiB. Insgesamt sind das 1.000 MiB.

Nach den ersten 99 Dateien ergibt die Dateianzahl 99 ÷ 100 = 99 %. Die Datenmenge ergibt 99 ÷ 1.000 = 9,9 %. Es bleibt nur eine Datei, aber sie enthält 90,1 % der Daten. Beide Rechnungen sind richtig: sie messen Verschiedenes.

Wenn die letzte Datei groß istEine große Abschlussdatei nach 99 kleinen Dateien lässt den anzahlbasierten Fortschritt stark vom bytebasierten abweichen.99 kleine DateienNach Dateianzahl fast fertigEine große Datei verbleibtEin Großteil der Daten verbleibtVerschiedene Sichten auf eine Aufgabe

Abbildung 4: 99 % nach Dateianzahl versprechen nicht, dass nur 1 % der Zeit verbleibt.

Genügen also Bytezahlen? Nein. Viele kleine Dateien über SMB zu übertragen verursacht wiederholt Aufwand für das Anlegen der Dateien und für Anfrage-Roundtrips. Dieselbe Gesamtbytezahl muss nicht dieselbe Zeit brauchen wie eine einzelne große Datei. 3

Folglich kann „noch 500 MiB“ eine korrekte Messung sein, während die benötigte Zeit mit dem Inhalt dieser 500 MiB schwankt. Dateien und Bytes gemeinsam anzuzeigen ist nicht deshalb nützlich, weil eine Zahl falsch wäre, sondern weil jede etwas zeigt, was die andere auslässt.

5. „Wird vorbereitet“ kann heißen: der Nenner wird ermittelt

Ein Prozentsatz braucht eine Gesamtmenge als Nenner. Eine Anwendung zu bitten, einen ganzen Ordner zu verarbeiten, heißt aber nicht zwangsläufig, dass sie bereits jede Datei darin erfasst hat.

Angenommen, die Anwendung geht von 100 Elementen aus, verarbeitet 80 und entdeckt dann weitere 100. Dieselben 80 erledigten Elemente stehen nun für 80/200 statt 80/100. Die Anzeige fällt von 80 % auf 40 %, aber erledigte Arbeit ist nicht verschwunden. Eine vorläufige Gesamtmenge als endgültige darzustellen hat den Widerspruch zur Erwartung der Lesenden erzeugt.

Fortschritt anzeigen, bevor die Gesamtmenge bekannt istVermeiden Sie einen endgültigen Prozentsatz, solange Ziele noch ermittelt werden; sobald die Gesamtmenge bekannt ist, verbinden Sie sie mit der erledigten Arbeit zu einem Verhältnis.Noch nichtJaDie Ziele ermittelnIst die Gesamtmenge bekannt?Stufe und gefundene Anzahl zeigenEinen Prozentsatz zeigen

Abbildung 5: Ein unbekannter Nenner ist etwas anderes als 0 % Fortschritt.

Windows bietet Fortschrittssteuerelemente sowohl für bestimmte Werte als auch für unbestimmte Aktivität. 4 Für diese Lage empfehle ich, etwas wie „Elemente werden gesucht: 1.200 gefunden“ anzuzeigen und einen Prozentsatz erst dann, wenn die Gesamtmenge bekannt ist. Das Fehlen eines Countdowns ist kein Beleg dafür, dass nichts geschieht.

6. „Übertragung 100 %“ und „alles fertig“ markieren verschiedene Grenzen

6.1 Am Ende kann ein weiterer Vorgang ausstehen

Zur Veranschaulichung teilen wir die Arbeit einer Anwendung in drei Stufen: Übertragung, Überprüfung und Abschluss des Ergebnisses. Verlangt der Entwurf eine Überprüfung nach der Übertragung, ist die Gesamtaufgabe mit dem Ende der Übertragung nicht fertig. Das ist ein beispielhafter Anwendungsentwurf, keine Behauptung, jede Kopie oder Installation folge diesen Stufen.

Abschluss der Übertragung gegenüber GesamtabschlussDiese fiktive Anwendung überprüft und schließt das Ergebnis nach der Übertragung ab, sodass übertragene Bytes allein keinen Gesamterfolg belegen können.ÜbertragungÜberprüfungErgebnis abschließenGesamterfolgÜbertragung 100 % endet hier

Abbildung 6: Ein ausdrücklicher Bezug macht es möglich zu erklären, warum nach 100 % noch eine Stufe folgt.

Statt einen Gesamtbalken mit „Noch 1 Sekunde“ bei 99 % festzuhalten, ist es stimmiger, den Status auf „Übertragung abgeschlossen; wird überprüft“ zu ändern. Auch Microsofts UI-Leitfaden für Desktopanwendungen rät davon ab, einen Gesamtabschluss anzuzeigen, bevor der Vorgang tatsächlich beendet ist. 5

6.2 Auch Schreibvorgänge haben mehr als eine Grenze

Windows nutzt für Dateischreibvorgänge normalerweise eine Zwischenspeicherung. Je nach Einstellungen und API-Verträgen betreffen das Schreiben aus der Anwendung und das Festschreiben der Daten auf dem Speicher verschiedene Grenzen. 6 FlushFileBuffers ist eine API, um die gepufferten Informationen einer angegebenen Datei an das Gerät zu senden. 7

Eine begriffliche Sicht auf gepufferte SchreibvorgängeBei Pufferung sollten der von der Anwendung angenommene Schreibvorgang und das spätere Schreiben auf der Speicherseite nicht als dasselbe Ereignis behandelt werden.Anwendung schreibtIm Puffer gehaltenAuf den Speicher geschrieben

Abbildung 7: Dies ist eine begriffliche Darstellung gepufferter Schreibvorgänge, nicht der Abschlussvertrag eines einzelnen Produkts.

Eine Pause bei 99 % wird jedoch nicht immer durch das Leeren eines Caches verursacht. Ob die Aufgabe überprüft, leert oder auf etwas anderes wartet, muss aus ihrem Entwurf oder ihren Aufzeichnungen hervorgehen. Schließen Sie nicht allein aus einer Fortschrittszahl, dass ein USB-Gerät abgezogen oder der Strom abgeschaltet werden darf.

7. Steht die Aufgabe still oder nur die Anzeige?

In einer Windows-WPF-Anwendung verarbeitet der Dispatcher des UI-Threads die UI-Arbeit. Diesen Thread lange zu belegen verzögert Aktualisierungen und Reaktionen auf Eingaben. Unterscheiden Sie den zugrunde liegenden Vorgang von der Arbeit, die dessen Ergebnisse auf den Bildschirm bringt. 8

Der Weg von der Verarbeitung zur FortschrittsanzeigeSelbst wenn der Vorgang Fortschritt meldet, kann die Anzeige ihn erst abbilden, wenn die Oberfläche die Aktualisierung verarbeitet.Tatsächliche VerarbeitungFortschritt meldenUI-Aktualisierung verarbeitenBildschirm aktualisierenUI-Thread blockiert

Abbildung 8: Eine eingefrorene Anzeige bedeutet nicht zwangsläufig, dass der Vorgang selbst eingefroren ist.

Umgekehrt kann eine Animation, die unabhängig von der eigentlichen Arbeit laufen soll, weiter kreisen, während diese Arbeit wartet. „Bewegt sich, also gesund; steht still, also kaputt“ ist keine ausreichende Unterscheidung.

Was zu beobachten ist Was es sagen kann Was es allein nicht belegt
Änderungen an erledigten Elementen, Bytes oder Stufe Gemeldetes Vorankommen der Arbeit Ob die gesamte Aufgabe erfolgreich sein wird
Protokollzeiten, Ziele und Fehler Was wo als Geschehen aufgezeichnet wurde Ob nicht protokollierte Arbeit stillsteht
CPU-, Datenträger- und Netzwerknutzung des betreffenden Prozesses Ressourcennutzung in diesem Augenblick Gesundes Vorankommen gegenüber Warten oder nutzloser Wiederholung
Eine Eingabeaufforderung in einem anderen Fenster Ob eine Benutzereingabe nötig ist Jede mögliche Ursache eines Stillstands

Ich empfehle, zuerst Anzeige und Startzeit festzuhalten, auf Eingabeaufforderungen zu prüfen und Zählwerte oder Protokolle über die Zeit zu vergleichen. Behandeln Sie Werte aus dem Task-Manager als ergänzenden Beleg. Prüfen Sie vor einem Abbruch das Abbruchverfahren der Anwendung und was mit teilweiser Ausgabe geschieht.

Auch der Abbruch in .NET ist kooperativ: Einen Abbruch anzufordern hält den Vorgang nicht von sich aus sofort an; der Vorgang muss darauf reagieren. 9 Deshalb sollten „wird abgebrochen“ und „abgebrochen“ getrennte Zustände sein. Eine Fortschrittsanzeige allein kann keine allgemeingültige Minutenzahl liefern, nach der ein erzwungenes Beenden der Anwendung sicher wird.

8. Drei Anzeigen desselben Vorgangs vergleichen

Die Vergleichsdemo zum Fortschrittsbalken öffnen

Die Demo schaltet auf Knopfdruck durch Beobachtungen einer fiktiven Arbeitslast. Warten müssen Sie nicht, und sie liest, schreibt oder lädt keine Dateien hoch. Der erste Fall enthält 99 kleine Dateien und eine große. Für jede Beobachtung zeigt sie einen Balken nach Dateianzahl, einen nach übertragener Datenmenge und den Gesamtzustand der Aufgabe nebeneinander.

Während die letzte große Datei übertragen wird, bleibt der anzahlbasierte Balken bei 99 %, während der Datenmengenbalken wächst. Erreicht die übertragene Datenmenge 100 %, lautet der Gesamtzustand weiterhin „wird überprüft“. Erst die nächste Beobachtung markiert den Erfolg. Sie sehen, wie dieselbe Arbeit allein aufgrund der Darstellung stillstehend oder aktiv wirken kann.

Wie die Vergleichsdemo zu lesen istEine einzelne Beobachtung eines fiktiven Vorgangs speist drei Anzeigen: Dateianzahl, übertragene Datenmenge und Gesamtzustand.Ein fiktiver VorgangDieselbe BeobachtungProzentsatz nach DateianzahlProzentsatz nach übertragener DatenmengeGesamtzustand der Aufgabe

Abbildung 9: Die Demo vergleicht drei Sichten auf einen Vorgang, nicht drei verschiedene Vorgänge.

Der zweite Fall bildet die Verlangsamung aus Abschnitt 2 nach und zeigt die Rechnung, die aus 10 Sekunden 79 macht. Er verwendet die folgende Berechnung. Das ist eine bewusst einfache Lehrschätzung, keine produktive Umsetzung von Wiederholungen, Parallelverarbeitung oder stufenspezifischer Vorhersage.

function estimateSeconds(remaining, rate) {
  if (!Number.isFinite(remaining) || remaining < 0) return null;
  if (remaining === 0) return 0;
  if (!Number.isFinite(rate) || rate <= 0) return null;
  const seconds = remaining / rate;
  return Number.isFinite(seconds) ? seconds : null;
}

Verwenden Sie für remaining und rate zueinander passende Einheiten, etwa MiB und MiB/s. Ein Rückgabewert von null bedeutet, dass von der gemessenen Arbeitslast nichts mehr verbleibt, nicht, dass die gesamte Anwendungsaufgabe erfolgreich war. Bei positiver Restarbeit liefert eine Geschwindigkeit von null oder eine unbekannte Geschwindigkeit null, damit eine unbekannte Schätzung nicht mit „noch 0 Sekunden“ verwechselt wird.

9. Ziel ist, niemanden in die Irre zu führen, nicht bloß genau zu wirken

Für den hier besprochenen Entwurf würde ich die aktuelle Stufe, die gemessene Arbeit, eine Zeitschätzung nur bei Berechtigung sowie das Ergebnis Erfolg, Fehlschlag oder Abbruch getrennt halten. Selbst wenn Stufenprozentsätze zu einem Balken zusammengeführt werden, stellt eine Aufteilung wie „Übertragung 80 %, Überprüfung 20 %“ Entwurfsgewichte dar, keine Garantie für die Zeitverteilung dieses Laufs.

Eine Fortschrittsanzeige aus Beobachtungen aufbauenZeigen Sie aktuelle Stufe, gemessene Mengen, eine Zeitschätzung bei Berechtigung und das Endergebnis als getrennte Informationen.Informationen aus dem VorgangAktuelle StufeGemessene und gesamte ArbeitSchätzung bei BerechtigungErfolg, Fehlschlag oder Abbruch

Abbildung 10: Halten Sie Beobachtungen und Vorhersagen auch auf dem Bildschirm auseinander.

„Wird überprüft: 400 / 1.000 Elemente; verbleibende Zeit wird berechnet“ kann ohne Countdown nützlich sein. Zeigen Sie einen Zeitstempel, unterscheiden Sie „letzter Fortschrittszuwachs“ von „letzte erfolgreiche Kommunikation mit der Oberfläche“. Aktualisieren Sie nicht nur Letzteres auf eine Weise, die eine stillstehende Aufgabe normal vorankommen lässt.

Dasselbe Prinzip gilt für Barrierefreiheit. Das HTML-Element progress kann unbestimmten Fortschritt darstellen, indem sein Wert weggelassen wird. 10 Lassen Sie bei einer eigenen ARIA-Fortschrittsanzeige aria-valuenow weg, wenn der Wert unbekannt ist, und geben Sie einen zugänglichen Namen an, der benennt, was voranschreitet. 11 Sowohl die grafische Anzeige als auch die vorgelesene Information sollten ehrlich widerspiegeln, was bekannt ist.

10. Häufig gestellte Fragen

Bedeutet „Noch 1 Sekunde“ ohne Abschluss, dass etwas fehlgeschlagen ist?

Die Anzeige allein kann das nicht entscheiden. Unterscheiden Sie eine ungenaue Schätzung, eine weitere Stufe, verzögerte UI-Aktualisierungen und einen tatsächlichen Stillstand. Sowohl „das kommt oft vor, also ist alles in Ordnung“ als auch „eine Sekunde ist vorbei, also ist es kaputt“ ziehen vorschnelle Schlüsse.

Bedeuten 99 %, dass 1 % der Gesamtzeit verbleibt?

Nein. Ob der Prozentsatz Dateien oder Bytes zählt, die Zeit je Einheit muss nicht gleichbleibend sein. Die verstrichene Zeit mit 1 % zu multiplizieren ergibt nicht die Restdauer.

Bedeutet eine sich drehende Animation, dass die Aufgabe gesund ist?

Eine Aktivitätsanzeige und ein Beleg für vorankommende Arbeit sind verschiedene Dinge. Sehen Sie erledigte Arbeit, Stufen und Protokolle zusammen an. Animation allein garantiert nicht, dass die Aufgabe zu einem erfolgreichen Abschluss kommen kann.

Kann ich Fortschritt zeigen, ohne die verbleibende Zeit zu kennen?

Sind Gesamtmenge und erledigte Menge bekannt, können Sie deren Verhältnis zeigen. Lassen Sie nur den Countdown weg, wenn die Vorhersage unzuverlässig ist. Ist die Gesamtmenge selbst unbekannt, nutzen Sie eine unbestimmte Anzeige mit Stufe und erledigter Anzahl.

11. Zusammenfassung: Verbleibende Zeit ist eine Prognose, Abschluss ein Ergebnis

„Noch 1 Sekunde“ dauert nicht deshalb lange, weil der Computer nicht bis eins zählen könnte. Es dauert lange, weil beobachtete Arbeit genutzt wird, um eine Verarbeitungszeit zu schätzen, die noch nicht stattgefunden hat. Zähleinheiten, das Ermitteln der Ziele, Abschlussstufen und verzögerte UI-Aktualisierungen kommen erschwerend hinzu.

Fragen zu einer Fortschrittsanzeige, die nicht fertig wirdPrüfen Sie, was der Prozentsatz misst, ob sich die vorhergesagte Geschwindigkeit geändert hat, ob eine weitere Stufe aussteht und ob die Oberfläche oder der eigentliche Vorgang stillsteht.Prozentsatz wovon?Hat sich die vorhergesagte Geschwindigkeit geändert?Steht eine weitere Stufe aus?Stillstand der Oberfläche oder der Verarbeitung?

Abbildung 11: Verwandeln Sie Ärger über eine Zahl in Fragen, die Sie untersuchen können.

Sehen Sie als Anwender auf Stufen und Änderungen statt allein auf Zahlen. Vermischen Sie als Entwickler gemessene Arbeit, Vorhersage und Ergebnisse nicht. Wichtiger, als wiederholt „eine Sekunde“ richtig zu treffen, ist zu erklären, was gerade geschieht und was noch unbekannt ist. Das ist die Aufgabe einer guten Fortschrittsanzeige.

  1. Microsoft Learn, LPPROGRESS_ROUTINE callback function. Die Bedeutung der von einem Kopierfortschritts-Rückruf gelieferten Bytezahlen. 

  2. Microsoft, The Old New Thing, Why does the copy dialog give such horrible estimates?. Eine Erklärung von 2004 zur Schwierigkeit, künftige Geschwindigkeit vorherzusagen, keine Spezifikation heutiger Windows-Interna. 

  3. Microsoft Learn, Slow SMB files transfer speed. Wiederholter Aufwand für das Anlegen von Dateien und für Kommunikation bei der Übertragung kleiner Dateien. 

  4. Microsoft Learn, Progress controls. Steuerelemente für bestimmten und unbestimmten Fortschritt. 

  5. Microsoft Learn, Progress Bars. Leitfaden für Fortschrittsanzeigen in Desktopanwendungen. 

  6. Microsoft Learn, File Caching. Dateizwischenspeicherung und Schreibverhalten. 

  7. Microsoft Learn, FlushFileBuffers function. Die API, um die gepufferten Informationen einer Datei an das Gerät zu senden. 

  8. Microsoft Learn, Threading model. Der WPF-Dispatcher und die Reaktionsfähigkeit des UI-Threads. 

  9. Microsoft Learn, Cancellation in Managed Threads. Kooperativer Abbruch in .NET. 

  10. WHATWG, The progress element. Das HTML-Element progress und der unbestimmte Zustand. 

  11. W3C, WAI-ARIA 1.2: progressbar. Regeln für Benennung und Werte barrierefreier Fortschrittsinformationen. 

Aktuelle Artikel mit denselben Schlagwörtern führen zu verwandten Themen weiter.

Diese Seiten ordnen den Artikel in einen größeren Leistungs- und Entscheidungskontext ein.

Dieser Artikel ist direkt mit den folgenden Leistungen verbunden.

Häufige Fragen

Fragen, die in Beratungen zu diesem Artikelthema häufig gestellt werden.

Bedeutet eine bei einer Sekunde hängende Aufgabe, dass etwas fehlgeschlagen ist?
Die Anzeige allein kann Ihnen das nicht sagen. Unterscheiden Sie eine ungenaue Geschwindigkeitsschätzung, eine abschließende Verarbeitungsstufe, eine veraltete Oberfläche und einen tatsächlichen Stillstand. Prüfen Sie Änderungen an Zählwerten und Protokollen und achten Sie auf Eingabeaufforderungen. Beenden Sie die Anwendung nicht allein deshalb gewaltsam, weil dort „Noch 1 Sekunde“ steht.
Bedeuten 99 %, dass nur noch 1 % der Gesamtzeit übrig ist?
Nein. Die Bedeutung hängt davon ab, ob der Prozentsatz Elemente, Bytes oder gewichtete Stufen misst, und diese Einheiten müssen nicht gleich viel Zeit beanspruchen. Ein Fortschrittsprozentsatz misst einen Anteil der Arbeit, nicht die verbleibende Zeit selbst.
Beweist eine sich drehende Animation, dass die Aufgabe gesund ist?
Nein. Laufen Animation und Verarbeitung unabhängig voneinander, kann die Animation weiterlaufen, während die Aufgabe wartet. Unterscheiden Sie die Animation von Belegen für erledigte Arbeit wie Zählwerten, Stufenwechseln und Protokollen.
Kann ich einen Fortschrittsbalken ohne genaue Zeitschätzung anzeigen?
Ja. Sind Gesamtmenge und erledigte Menge bekannt, können Sie deren Verhältnis anzeigen und die Zeitschätzung weglassen, wenn die Geschwindigkeit instabil ist. Ist die Gesamtmenge selbst unbekannt, zeigen Sie die Stufe oder die erledigte Anzahl, statt einen Prozentsatz zu erfinden.

Autorenprofil

Profilseite des Artikelautors.

Go Komura

Geschäftsführer von KomuraSoft LLC

Spezialisiert auf Windows-Softwareentwicklung, technische Beratung und Fehleranalyse, insbesondere bei bestehenden Systemen und schwer reproduzierbaren Störungen.

Zurück zum Blog