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

VB.NET Discussion :

Lancer plusieurs fois un BGW avec un argument différent


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2012
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2012
    Messages : 74
    Par défaut Lancer plusieurs fois un BGW avec un argument différent
    Bonjour à tous,

    j'ai un code qui exécute des traitements dans Access dans des BGW car je dois faire le traitement 10 fois sur 10 bases de données différentes de stricture identique.

    Actuellement, j'ai donc 10 BGW différent mais dont le contenu est EXACTEMENT identique. La seule différence réside en ce que leur progression n'est pas rapporté à la même Progress Bar.

    J'ai donc eu l'idée de lancer mon BGW plusieurs fois avec un argument différent, mais je me prends une erreur me disant que mon BGW est déjà occupé.

    M'étant déjà trouvé dans des impasses qui en fait n'en étaient pas, je me pose la question suivante :

    Est-il vraiment impossible de lancer plusieurs fois un BGW ?

    Et le cass échéant, comment pourrais-je éviter ces multiplications de code ?
    En créant dynamiquement un BGW (y compris son code) pour chaque base de donnée ? Je pense que c'est possible mais... possible pour moi, c'est autre chose.

    Ca simplifierai pas mal de choses, car tout est multiplié par autant de bases de données que je n'ai à traiter, et leur nombre va aller en augmentant !

    Merci de vos lumières !

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Tu peux créer plusieurs BGW qui utilisent les mêmes gestionnaires d'évènements, comme ça tu évites de dupliquer le code :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    for(int i = 0; i < 10; i++)
    {
        var bgw = new BackgroundWorker();
        bgw.DoWork += bgw_DoWork;
        bgw.RunWorkerCompleted += bgw_RunWorkerCompleted;
        bgw.ProgressChanged += bgw_ProgressChanged
        ...
        bgw.RunWorkerAsync(i);
    }
    Et dans les gestionnaires, si tu as besoin d'utiliser le BGW en cours, tu peux le récupérer via le paramètre sender :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    private void bgw_DoWork(object sender, DoWorkEventArgs e)
    {
        var bgw = (BackgroundWorker)sender;
     
        ...
     
     
        bgw.ReportProgress(progress, e.Argument);
     
     
        ...
    }

Discussions similaires

  1. [Débutant] Lancer plusieurs fois le même projet
    Par Jazz_ dans le forum C#
    Réponses: 2
    Dernier message: 06/12/2011, 12h37
  2. Réponses: 6
    Dernier message: 13/01/2010, 16h28
  3. [C#][ActiveX] Lancer plusieurs fois le contrôle
    Par Nico1987 dans le forum ASP.NET
    Réponses: 4
    Dernier message: 04/02/2009, 16h15
  4. Lancer plusieurs fois la meme thread
    Par andromeda dans le forum Concurrence et multi-thread
    Réponses: 19
    Dernier message: 26/09/2007, 13h32
  5. Réponses: 23
    Dernier message: 08/02/2006, 09h15

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