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 :

[C#] Comment accéder au formulaire dans un BackGroundWorker ?


Sujet :

C#

Mode arborescent

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Mai 2006
    Messages
    68
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 68
    Par défaut [C#] Comment accéder au formulaire dans un BackGroundWorker ?
    Bonjour,

    Je voudrais pendant le chargement assez long d'une fenetre MDI fille faire evoluer un progressbar dans la fenetre principale MDI parent.
    La fenetre MDI fille charge à son démarrage un ensemble assez important de données via une base Oracle.

    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
     
                    /// <summary>
    		/// Ouvre la fenêtre FormRPS : Fenêtre contenant les données RPS.
    		/// </summary>
    		/// <param name="sender"></param>
    		/// <param name="e"></param>
    		/// <remarks>La fenêtre fille MDI s'ouvre avec une instance unique.
    		/// Il est donc impossible d'ouvrir 2 FormRPS en même temps    
                    </remarks>
    		private void taskItem1_Click(object sender, System.EventArgs e)
    		{
                       Activeprocessing(true);
                       backgroundWorker1.RunWorkerAsync();
                       Activeprocessing(false);
                       backgroundWorker1.CancelAsync();
    		}	<------	Erreur Inter-Thread Ici
     
    		/// <summary>
    		/// Procédure d'ouverture d'une fenêtre MDI fille.
    		/// </summary>
    		/// <remarks>Si la fenêtre est déjà ouverte, alors cette fenêtre devient visible</remarks>
    		/// <param name="pFormName"></param>
    		/// <param name="pFormType"></param>
    		private void OpenUniqueForm(string pFormName,Form pFormType)
    		{
                            Form[] ChildrenForms = this.MdiChildren;
    			foreach (Form chform in ChildrenForms)
    			{
    				if (chform.Name== pFormName)
    				{
    					chform.Visible=true;
    					return ;
    				}
    			}
    			Form NewMdiChildForm = pFormType;
    			NewMdiChildForm.MdiParent=this;
    			NewMdiChildForm.Visible=true;
    		}
     
            /// <summary>
            /// Procédure indiquant un etat de traitement long de l'application
            /// </summary>
            /// <param name="pOnProcessing">Paramètre Booléan indiquant l'atat On/Off du processing</param>
            private void Activeprocessing(bool pOnProcessing)
            {
                if (pOnProcessing)
                {
                    Cursor.Hide();
                    progressBarWait.Enabled = true;
                    progressBarWait.Visible = true;
                    labelWait.Visible = true;
                }
                else
                {
                    Cursor.Show();
                    progressBarWait.Enabled = false;
                    progressBarWait.Visible = false;
                    labelWait.Visible = false;
                }
            }
     
            private void backgroundWorker1_ProgressChanged_1(object sender, ProgressChangedEventArgs e)
            {
                this.progressBarWait.Value = e.ProgressPercentage;
            }
     
            private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
            {
                OpenUniqueForm("FormRps",new FormRps());
            }
    Sauriez vous comment régler ce problème ?
    vous pourrez voir un annexe l'erreur.
    Merci d'avance pour votre aide

    j'a iessayé avec ceci mais sans resultat : même erreur :
    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
     
    delegate void SafeOpenUniqueForm(string pFormName, Form pFormType);
     
    		/// <summary>
    		/// Procédure d'ouverture d'une fenêtre MDI fille.
    		/// </summary>
    		/// <remarks>Si la fenêtre est déjà ouverte, alors cette fenêtre devient visible</remarks>
    		/// <param name="pFormName"></param>
    		/// <param name="pFormType"></param>
    		private void OpenUniqueForm(string pFormName,Form pFormType)
    		{
                Form[] ChildrenForms = this.MdiChildren;
    			foreach (Form chform in ChildrenForms)
    			{
    				if (chform.Name== pFormName)
    				{
    					chform.Visible=true;
    					return ;
    				}
    			}
    			Form NewMdiChildForm = pFormType;
                if (NewMdiChildForm.InvokeRequired)
                {
                    SafeOpenUniqueForm MyDelegate = new SafeOpenUniqueForm(OpenUniqueForm);
                    this.Invoke(MyDelegate, new object[] { pFormName, pFormType });
                }
                else
                {
                    NewMdiChildForm.MdiParent = this;
                    NewMdiChildForm.Visible = true;
                }
    		}
    Images attachées Images attachées  

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Comment construire des éléments d'interface dans un backgroundworker ?
    Par billybobbonnet dans le forum Windows Presentation Foundation
    Réponses: 2
    Dernier message: 10/09/2014, 14h05
  2. Réponses: 1
    Dernier message: 11/08/2010, 14h19
  3. Comment exporter un formulaire dans excel
    Par branqueira dans le forum Access
    Réponses: 3
    Dernier message: 28/02/2006, 11h35
  4. Réponses: 4
    Dernier message: 10/02/2006, 16h24
  5. Réponses: 3
    Dernier message: 27/10/2004, 14h43

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