1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
| private async void test(CancellationToken token)
{
string tmp = dtgViewDouble.Rows[0].Cells[1].Value.ToString();
progressBar1.Maximum = dtgViewDouble.Rows.Count;
for(int i = 1; i<dtgViewDouble.Rows.Count; i++) //TODO: tres tres lents si beaucoup d'élement
{
if(dtgViewDouble.Rows[i].Cells[1].Value.ToString() == tmp)
{
dtgViewDouble.Rows[i].Selected = true;
}
else
{
tmp = dtgViewDouble.Rows[i].Cells[1].Value.ToString();
}
// Tous les 20 éléments, on met à jour la barre de progression et on libère le thread graphique pendant 50ms
// afin qu'il puisse faire des mises à jour.
if (i % 20 == 0)
{
// Inutile de faire appel à UpdateProgressBar à chaque itération. Cela ne fait que surcharger le thread graphique pour rien.
// Autant faire un appel juste avant de redonner la main.
UpdateProgressBar();
await Task.Delay(50, token);
if (token.IsCancellationRequested)
{
return;
}
}
}
} |