Woher holst Du eigentlich die Vergleichswerte oldDir und oldDirSize?
Ich schlage vor, Du trennst alles:
1. Ein
Dictionary<string, long> pathSizes registriert Pfadnamen und gefundene Größe.
2. Eine Methode
GetCurrentDirSize berechnet die aktuelle Größe (entsprechend zu Deinem zweiten Code im ersten Beitrag).
3. Eine Methode
LookAndCompare liest die aktuelle Größe und gibt, sofern vorhanden, die Prozentangabe:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| void LookAndCompare(string folder) { long currentSize = GetCurrentDirSize(folder); if (pathSizes.ContainsKey(folder)) { long oldDirSize = pathSizes[folder]; double diffPercentage = oldDirSize == 0 ? 100.0 : (currentSize - oldDirSize) * 100.0 / (double)oldDirSize; } else { pathSizes.Add(folder, currentSize); } } |
4. Die "echte" Größe sollte immer "orignal" verwendet werden, also als
long. Jede Umrechnung verfälscht Zwischenrechnungen, sollte also nur dort gemacht werden, wo sie wirklich nötig ist - bei Dir zur Anzeige.
Vorsorglich weise ich darauf hin, dass es keine Standardmethode oder Formatierung gibt, mit der aus Bytes kB oder MB gemacht werden.
Das sollte jetzt wirklich helfen. Jürgen
@Khabarakh
Ich war gestern auch sehr überrascht: Als ich meinen Beitrag abgeschickt hatte, habe ich nur diesen gesehen; aber in der Box "Die letzten 10" stand Deiner schon drin.