IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

problème de mise à jour des données à partir d'un backgroundworker


Sujet :

C#

  1. #1
    Membre régulier
    Inscrit en
    Mars 2003
    Messages
    217
    Détails du profil
    Informations forums :
    Inscription : Mars 2003
    Messages : 217
    Points : 73
    Points
    73
    Par défaut problème de mise à jour des données à partir d'un backgroundworker
    Bonjour,
    J'utilise un winform où il existe un graphique et des labels pour afficher des statistiques. Dans un autre winform, je dispose des caractéristiques de paramétrage pour recalculer les données.
    Ce calcul fait appel à un backgorundworker. Lors de la procéduure RunWorkerComplete, je dois mettre à jour le graphique et infos concernant les stats. Mon problème est que, j'arrive pas à afficher mes nouvelles données. Après l'exéuction avec des break point, je m'apercois que le texte des labels sont vides avant que je les remplis avec mes nouvelles infos et qu' à la fin ruWorkerCompleted, les labels gardes les infos précédentes.
    Est ce quelqu'un sait pourquoi mes mise à jour des données ne s'affichent pas lorsque je le fais dans backgroundworker?
    Je passe par l'utilisation d'une classe interface pour faire le lien entre mes deux winforms

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 73
    Points : 67
    Points
    67
    Par défaut
    Salut

    Est ce que tu pourrais nous donner un morceau de code stp ?

  3. #3
    Membre régulier
    Inscrit en
    Mars 2003
    Messages
    217
    Détails du profil
    Informations forums :
    Inscription : Mars 2003
    Messages : 217
    Points : 73
    Points
    73
    Par défaut
    la fonction getInfo info est présente dans le 2eme winform pour mettre àjour mes labels et mes graphiques.
    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
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
     public void getInfo(GraphInfo original, GraphInfo cleaned, string currentText)
            {
     
                //les statistiques sur les données originales
                valueOrigin = (Hashtable)original.StatColumnValue[currentText];
                //les statistiques sur les données nettoyées
                valueCleaned = (Hashtable)cleaned.StatColumnValue[currentText];
     
     
     
                //les coordonnées sur le dataPoint original
                pointOriginX = (ArrayList)original.DataPointX[currentText];
                pointOriginY = (ArrayList)original.DataPointY[currentText];
                pointX.Add(pointOriginX);
                pointY.Add(pointOriginY);
                //les coordonnées sur le dataPoint nettoyé
                pointCleanedX = (ArrayList)cleaned.DataPointX[currentText];
                pointCleanedY = (ArrayList)cleaned.DataPointY[currentText];
                pointX.Add(pointCleanedX);
                pointY.Add(pointCleanedY);l 
     
                //txtEliminated.Text = infoCleaned.getEliminateData(mdiP.dExtracted.Original,
                //    mdiP.dExtracted.Cleaned, this.currentText).ToString() + "%";
                //txtReplaced.Text = infoCleaned.getEliminateData(mdiP.dExtracted.Cleaned,
                //    mdiP.dExtracted.Missing, this.currentText).ToString() + "%";
     
                //affichage des infos sur les données originales
                lblAvgValue.Text = valueOrigin["Avg"].ToString();
                lblMaxValue.Text = valueOrigin["Max"].ToString();
                lblMinValue.Text = valueOrigin["Min"].ToString();
                lblNonNumValue.Text = original.getNonNumeric(pointOriginY).ToString() + "%";
                //lblEstimationValue.Text = lblNonNumValue.Text;
                lblStDevValue.Text = valueOrigin["Std"].ToString();
     
                //affichage des infos sur les données nettoyées
                if (valueCleaned != null)
                {
                    lblAvgCleaned.Text = valueCleaned["Avg"].ToString();
                    lblMaxCleaned.Text = valueCleaned["Max"].ToString();
                    lblMinCleaned.Text = valueCleaned["Min"].ToString();
                    lblNonNumCleaned.Text = cleaned.getNonNumeric(pointCleanedY).ToString() + "%";
                    //lblEstimationValue.Text = lblNonNumValue.Text;
                    lblStDevCleaned.Text = valueCleaned["Std"].ToString();
                }
                else
                {
                    lblAvgCleaned.Text = "0";
                    lblMaxCleaned.Text = "0";
                    lblMinCleaned.Text = "0";
                    lblNonNumCleaned.Text = "0" +"%";
                    //lblEstimationValue.Text = lblNonNumValue.Text;
                    lblStDevCleaned.Text = "0";
                }
     
                //verifier si les coordonnees originales sont proportionnelles aux coordonees des données nettoyées
                //si la valeur maximale ou minimale des données originales est deux fois supérieures aux données nettoyées
                //on construit deux graphiques
     
                if ((Math.Abs(double.Parse(valueOrigin["Min"].ToString())) > Math.Abs(double.Parse(valueCleaned["Min"].ToString()) * 2)) ||
                    (Math.Abs(double.Parse(valueOrigin["Max"].ToString())) > Math.Abs(double.Parse(valueCleaned["Max"].ToString()) * 2)))
                {
                    showGraph(chartPoint, "point", pointX, pointY, currentText, "separate");
                    showGraph(chartPointCleaned, "point", pointX, pointY, currentText, "separate");
                    chartPointCleaned.Dock = DockStyle.Bottom;
                    chartPoint.Dock = DockStyle.Top;
                }
                else
                {
                    showGraph(chartPoint, "point", pointX, pointY, currentText, "together");
                    chartPointCleaned.Dock = DockStyle.None;
                    chartPoint.Dock = DockStyle.Fill;
                    chartPoint.BringToFront();
                }
     
                //supprimer la liste
                pointX.Clear();
                pointY.Clear();
     
            }
    j'utilise une classe interface pour faire appel à cette fonction dans mon backgroundworker présent dans mon 1ere winform
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
      public interface originalInfoVisual
        {
            GraphInfo getGraphInfo();
            ArrayList getPointY();
            ArrayList getPointX();
            void getCropExecute(bool value);
            void showGraph(Chart chartGraph, string typeGraph, ArrayList pointX, ArrayList pointY,
                string currentText, string segmentInt, string axisInt);
            void getInfo(GraphInfo original, GraphInfo cleaned, string currentText);
            void comboBoxSelected(int index);
        }
    ici j'appelle la fonction getInfo dans doWork
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    //rafraichir les graphiques avec les nouvelles données
                        originalInfoVisual cleanedForm = mdiP.SynchOriginalPlot["cleanedPlot"];
                        cleanedForm.getInfo(infos, cleanedColumn, oldVariableCleaned);

Discussions similaires

  1. [MySQL] Mise à jour des données à partir d'un formulaire
    Par runcafre91 dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 07/08/2012, 19h56
  2. Problème de mise à jour des données en base
    Par raiseyourfist59 dans le forum Hibernate
    Réponses: 1
    Dernier message: 22/08/2011, 20h50
  3. [AC-2003] Problème de mise jour à des données avec ADO
    Par @omzo dans le forum VBA Access
    Réponses: 2
    Dernier message: 24/06/2010, 13h25
  4. Problème de mise à jour des données sur un onglet
    Par PenPen_lepingouin dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 26/06/2008, 17h49
  5. [C#][Access]Problème de mise à jour des données
    Par vvvvv dans le forum ASP.NET
    Réponses: 10
    Dernier message: 11/04/2006, 10h43

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo