Question

Cela semble trivial, mais je ne trouve pas d’algorithme propre à cela.

Je peux calculer le nombre total de lignes sur 2186.

Ensuite, j'ai pensé faire un 2186/100 = 21 (ce qui serait mon modNr) Puis j'ai pensé incrémenter le currentRowNr ++ dans Backgroundworker.reportprocess () Et faites un if (currentRowNr% modNr == 0) incrémenter la barre de progression.

La barre de progression semble maintenant se comporter correctement, cependant, elle ne s’arrête pas à 100. On me dit que le nombre a dépassé le maximum de 100. Mon algorithme semble erroné.

Il doit y avoir une solution propre pour cela et je ne fais que la compliquer. Quelqu'un de bon en maths? ; -)

Merci

Était-ce utile?

La solution

Définissez la propriété Maximum de la barre de progression sur 2186 et la propriété Minimum sur 0. Maintenant, chaque fois que vous dépassez un seul élément de votre traitement, vous augmentez la valeur de la barre de progression de 1. Vous n'avez plus besoin d'un algorithme, Progessbar se chargera de cela pour vous.

Autres conseils

Il est clair: 2121 = 101 * 21 et 2142, 2163, 2184 seront également > 100

C’est un problème d’arrondi simple.
Si vous utilisez 2186/100 + 1 = 22 comme modNr, vous obtiendrez 99 sur le dernier hit. Pour une précision extrême, suivez la réponse de Qua et reconfigurez la barre de progression.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top