Ich verwende den Webclient, um eine Datei herunterzuladen. Ich berechne den Fortschrittsprozentsatz wie folgt
Ich kenne die Dateigröße (ich lese es aus der Datenbanktabelle) der Datei, die heruntergeladen werden soll.
Ich bin von der Eigenschaft BytesRecieved
des WebClient abhängig, um die Gesamtzahl der während des Downloads abgerufenen Bytes zu kennen.
Der von mir verwendete Algorithmus ist double dProgress = (e.BytesReceived / FileSize)*100);
, um den Fortschrittsprozentsatz zu berechnen.
Ich bekomme jedoch keinen korrekten Fortschritts-Prozentsatz, um den Fortschrittsbalken zu aktualisieren.
Gibt es eine Methode, um den Fortschrittsprozentsatz zu berechnen?
Sehen Sie sich die folgende Zeile an:
double dProgress = (e.BytesReceived / FileSize)*100)
Wenn sowohl e.BytesReceived
als auch FileSize
ganze Zahlen sind, haben Sie immer 0 * 100 = 0
.
Machen Sie etwas wie folgt:
double dProgress = ((double)e.BytesReceived / FileSize)*100.0
Dies liegt daran, dass /
eine ganzzahlige Division hat, wenn zwei Ganzzahlen geteilt werden. Aber das willst du nicht. Sie konvertieren also eine der Variablen in double
.
BytesReceived und FileSize sind wahrscheinlich Ganzzahlen, daher müssen Sie den Fortschritt auf diese Weise berechnen:
%Vor%Dies ist ein sehr kniffliges Problem mit Grundrechenarten und Casting in C #.
Speichern Sie zuerst das Ergebnis der Ganzzahldivision in einer Doppelvariablen. Und tippe dann cast in eine Ganzzahl.
%Vor%Stellt fest, dass x / y = 0 für alle Werte von x und y, solange sie Ganzzahlen sind Wir können dies nicht in einer Zeile durch irgendwelche Casting-Kombinationen lösen
Tags und Links c#