kdior
Messages postés22Date d'inscriptionsamedi 17 janvier 2009StatutMembreDernière intervention16 juin 2009
-
15 avril 2009 à 16:09
kdior
Messages postés22Date d'inscriptionsamedi 17 janvier 2009StatutMembreDernière intervention16 juin 2009
-
16 avril 2009 à 08:28
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" .
krimog
Messages postés1860Date d'inscriptionlundi 28 novembre 2005StatutMembreDernière intervention14 février 201549 15 avril 2009 à 16:37
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
kdior
Messages postés22Date d'inscriptionsamedi 17 janvier 2009StatutMembreDernière intervention16 juin 20091 15 avril 2009 à 16:51
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));
krimog
Messages postés1860Date d'inscriptionlundi 28 novembre 2005StatutMembreDernière intervention14 février 201549 15 avril 2009 à 16:58
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())) ;
Vous n’avez pas trouvé la réponse que vous recherchez ?
kdior
Messages postés22Date d'inscriptionsamedi 17 janvier 2009StatutMembreDernière intervention16 juin 20091 15 avril 2009 à 17:49
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 ?