Copie de fichier trop long

[Résolu]
Signaler
Messages postés
22
Date d'inscription
samedi 17 janvier 2009
Statut
Membre
Dernière intervention
16 juin 2009
-
Messages postés
22
Date d'inscription
samedi 17 janvier 2009
Statut
Membre
Dernière intervention
16 juin 2009
-
Bonjour,

J'ai mis en place un programme en C#, le programme a pour objectif de télécharger les données (stocké sur un micro-contrôleur) et les enregistrer sur un fichier (*.txt ou *.csv).

   - le programme fonctionne très bien lorsque je crée un projet "Application Console" : temps d'exécution 3 à 4 seconde
   - le même programme mis dans un projet "Application windows Form" est trés long , c'est à dir 30 à 1 minute. avant que  la fenetre "Forme" ne s'affiche.

Je pense que c'est due à aspect grapfique "Form" .

Merci de m'aider.

6 réponses

Messages postés
1860
Date d'inscription
lundi 28 novembre 2005
Statut
Modérateur
Dernière intervention
14 février 2015
49
Si elles sont en commentaire, non, ça ne change rien. Sinon, tu peux peut-être gagner en perfs.

Krimog :
while (!(succeed = try())) ;
Messages postés
1860
Date d'inscription
lundi 28 novembre 2005
Statut
Modérateur
Dernière intervention
14 février 2015
49
Salut

L'aspect graphique Form (ou Windows Forms, de son nom véritable) ne prend quasiment pas de ressource. S'il met autant de temps, cela vient probablement d'autre part. Cependant, je ne pourrai pas t'en dire plus sans avoir un bout de code (un bout, hein, pas 500 lignes) à me mettre sous la dent

Krimog :
while (!(succeed = try())) ;
Messages postés
22
Date d'inscription
samedi 17 janvier 2009
Statut
Membre
Dernière intervention
16 juin 2009
1
voila un bout du code

 static Jour Sauvegarder(Jour J1) :  /* Jour est une classe contenant 2 tableaux de 1tab de double [255] et 1 tab de string [255]
        {
            
            PortCom SPp = new PortCom();
            SerialPort Com = new SerialPort();
            double[] nbreP = new double[100000];
            string str = null;
            string[] mesData = new string[100000];
            int i = 0;
 
/* Configuration port Com */  
            nbreP.Initialize();
            SPp.Initialise(Com);
            J1.Initialise(nbreP, mesData);
            str = "FF02020C0403";/* requette au micrcontroleur */
            SPp.EnvoiT(str); /* communication avec µC */
            J1 = SPp.ReceptionT(); /* Reception donnee µC */
         
      / * creation d'un fichier *.csv */
            StreamWriter Fichier = null;
            try
            {
                using (Fichier = new StreamWriter("infos.csv"))
                {
                    for (i = 0; i < 60; i++)
                    {
                        //Console.WriteLine(" \n \n  voici la lecture ");
                        string MySubstring = J1.DonneeStr(i).Substring(30, 194);

                        for (int no = 0; no < 192; no += 2)
                        {
                            Fichier.WriteLine(MySubstring.Substring(no, 2));
                           // Console.WriteLine(" \n MySubstring à 2 cara : {0}", MySubstring.Substring(no, 2));
                            
                        }
                    }

                }
               // Console.WriteLine("\n Sauvegarde terminee ");
                

            }
            catch (Exception e)
            {
                Console.WriteLine("L'erreur suivante s'est produite : " + e.Message);
            }
            Fichier.Close();
            
            return J1;
        }
Messages postés
1860
Date d'inscription
lundi 28 novembre 2005
Statut
Modérateur
Dernière intervention
14 février 2015
49
Je vois que les lignes Console.WriteLine sont commentées. Dans ta version WinForms, tu ne mets rien à la place ? Car sinon, c'est sûr que ce genre d'opération prend du temps. (si tu veux gérer ce genre d'affichage, il vaut mieux utiliser un thread d'affichage différent qui va regarder de temps en temps ce qu'il doit afficher.

Krimog :
while (!(succeed = try())) ;
Messages postés
22
Date d'inscription
samedi 17 janvier 2009
Statut
Membre
Dernière intervention
16 juin 2009
1
Avant tout, merci de votre aide,
Dans ma version WinForm, je ne met rien à la place des lignes Console.WriteLine.
Faut il donc que je supprime les lignes Console.WriteLine pour accelerer mon programme ?
Messages postés
22
Date d'inscription
samedi 17 janvier 2009
Statut
Membre
Dernière intervention
16 juin 2009
1
Ok,

 je te remercie pour ton aide.

Je test ça.