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 :

BackGroundworker et events


Sujet :

C#

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 13
    Par défaut BackGroundworker et events
    Bonjour,

    J'ai un petit problème d'évènements dans un backgroundworker.
    J'ai la classe suivante :

    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
     
    class MonControl : UserControl
    {
     
        private static UnType monObjet = new Untype();
        private UnAutreType monAutreObjet = new UnAutreType();
        private BackGroundWorker monBgw;
     
        public MonControl()
        {
     
            initializeComponent();
     
        }
     
        public void uneMethode ()
        {
     
            List<Object> listParam = new List<Object>();
            listParam.Add(monObjet );
            listParam.Add(monAutreObjet );
            monBgw.RunWorkerAsync(listParam);
     
        }
     
        private void voteBackgroundWorker_DoWork(object sender, DoWorkEventArgs e)
        {
     
            List<object> listArg = (e.Argument as List<object>);
     
            UnType monObjetCopy = (listArg[0] as UnType);
            UnAutreType monAutreObjetCopy = (listArg[1] as UnAutreType);
            monObjetCopy += new OnEventUntypeObjetEventHandler(monObjetCopy_OnEvent);
     
        }
     
        void monObjetCopy_OnEvent(Arg mesArguments)
        {
     
            //Problème : Comment faire pour accéder à mesArguments dans le DoWork ?
     
        }
     
    }
    Voilà le problème. La solution est peut être dans les méthodes anonymes car je crois qu'elles accèdent aux variables et objets de la méthode où elles sont appelées.
    Si vous avez une solution n'hesitez pas !
    Merci.

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 60

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 13
    Par défaut
    Merci pour ta réponse.
    J'ai déjà lu cet article effectivement. Je sais comment fonctionne un backgroundwroker. J'ai en déjà utilisé. Mais la je suis sur un cas de figure assez particulier où je m'abonne à un événement dans le bgw et j'aimerais récupéré les variables en cas de déclenchement.

  4. #4
    Expert confirmé

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Septembre 2006
    Messages
    3 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 580
    Par défaut
    salut

    je vois juste un problème

    Dans, ton backgroundworker, tu vas positionner un handler d'evenement concernant un objet qui n'appartient pas au backgroundWorker...

    Donc, l'evenement va se produire dans le thread principal et non dans le "thread" du background worker...."

    Et si tu veux que la méthode lié à l'event modifie le backgroundworker, il faut peut-etre fournir en statique ou pas d'ailleurs, un tableau contenant les backgroundworker, etc...

    Mais je me posais la question suivante :

    Par rapport à quelle problématique essayes tu de faire cela ?


    PArce qu'à priori, un backgroundWorker, c'est pour faire des traitements en "tache de fond" et pour ne pas "bloquer" l'IHM...

    The Monz, Toulouse

Discussions similaires

  1. Réponses: 11
    Dernier message: 13/04/2011, 14h06
  2. Paramètres lors de l'event ProgressChanged du BackgroundWorker
    Par GreatDeveloperOnizuka dans le forum C#
    Réponses: 2
    Dernier message: 10/06/2010, 19h14
  3. Gérer les events d'un tableau de boutons
    Par lord_kalipsy dans le forum wxWidgets
    Réponses: 7
    Dernier message: 20/10/2004, 10h13
  4. Réponses: 4
    Dernier message: 21/05/2004, 09h13
  5. Accès à une case d'un DBGrid dans l'event OnKeyDown
    Par fba dans le forum Bases de données
    Réponses: 2
    Dernier message: 02/03/2004, 12h48

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