Utilisation de la ProgressBar dans Linqpad

Si comme moi vous avez des scripts Linqpad qui ont un temps de traitement un peu long, il est toujours bon d'afficher une petite barre de progression.

Bien que l'utilisation ne soit pas compliquée, j'oublie toujours quelque chose pour que ça fonctionne du premier coup!

Voici, un exemple simple qui fait le job:

void Main()
{
	// On crée l'objet ProgressBar
	var progressBar = new Util.ProgressBar("En attente...");
	// On affiche la ProgressBar dans la fenêtre de résultats
	progressBar.Dump();

	int total = 10;
	for (int i = 0; i <= total; i++)
	{
		// On change le texte par défaut
		progressBar.Caption = $"En cours: {i}/{total}";
		// Le champ Fraction sert à faire progresser la zone bleue
		// ATTENTION: le résultat de la division doit être un double ou un float
		progressBar.Fraction = (float)i / total;
		Thread.Sleep(200);
	}
}

Le champ Fraction s'occupe de remplir votre ProgressBar. Ce champ accepte une valeur allant de 0 (vide) à 1 (plein). Vous devez être vigilant quand vous la calculez à ce que le résultat de la division soit un double ou un float.

Dans le code si je ne cast pas i en (float)i la division se fait entre deux entiers et le résultat est toujours tronqué, par exemple dans le premier cas 4/10 = 0 alors que dans le second cas (float)4/10 = 0,4.

Voici le résultat dans Linqpad: