Bonjour

Dans un windowsForm, je charge des gros fichiers CSV dans des Listes (une List par champ dans le CSV) pour pouvoir les traiter plus rapidement par la suite. Chaque liste reprend la date qui est dans le premier champ du CSV.

Le code (qui fonctionne très bien) donne ceci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
while (!MonFichier.EndOfStream) //tant que je ne suis pas à la fin du fichier
{
	string ligne = MonFichier.ReadLine();         // lecture d'une ligne
	tabCSV = ligne.Split(';');                    // récupération du tableau de string avec chaque contenu entre ;
 
	string[] FormatsDates = new string[8] { "dd/MM/yyyy", "d/M/yyyy", "dd/MM/yyyy HH:mm:ss.fff", "d/M/yyyy HH:mm:ss.fff", "dd/MM/yyyy HH:mm:ss", "d/M/yyyy HH:mm:ss", "dd/MM/yyyy HH:mm", "d/M/yyyy HH:mm" };//formats possible de date
 
	double date = DateTime.ParseExact(tabCSV[0], FormatsDates, null, System.Globalization.DateTimeStyles.None).ToOADate();
 
	index = index - NbChamps + 1;
	for (int y = 1; y < NbChamps; y = y + NombreDeChampParParametre)
	{
		try
		{
			Valeur = Convert.ToDouble(tabCSV[y], CultureInfo.InvariantCulture);
		}
		catch
		{
			break;
		}
 
		MesList[index].Add(new MyClassSerie { myDate = date, myValeur = Valeur });
		index++;                        
	}                
}
Mon soucis est que je ne vois pas comment gérer un avancement avec ça ;
la boucle principale s’exécute plus de 2 millions de fois sur un tache super rapide...
Si je calcule autant de fois un pourcentage d'avancement mon chargement va devenir 2 ou 3 fois plus long !

Comment puis-je gérer autrement mon chargement afin de savoir où j'en suis dedans ?

Merci par avance pour vos conseils.

PS : ne pas hésiter à démonter mon code ! S'il y a moyen d'aller plus vite pour charger le fichier je suis preneur...