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

Windows Forms Discussion :

multithreading avec windows form


Sujet :

Windows Forms

  1. #1
    Membre éclairé
    Inscrit en
    Septembre 2007
    Messages
    1 137
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 137
    Points : 707
    Points
    707
    Par défaut multithreading avec windows form
    Bonjour, je voudrais savoir s'il existe des tutoriaux pour faire du multithreading en windows form.

    En fait j'ai un programme qui lit des fichiers csv de 3 pays différent.
    Et je voudrais savoir s'il est possible de faire 2 pays dans un thread et le 3eme pays dans un second thread. Le probleme c'est que je n'ai jamais fait cela.

    Merci pour votre aide

  2. #2
    Modérateur

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Avril 2007
    Messages
    1 996
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 996
    Points : 3 102
    Points
    3 102
    Par défaut
    Si tu veux simplement paralléliser tes traitements, regarde du côté du BackGroundWorker.
    Il fera la travail pour toi.
    Si tu veux aller plus loin et gérer toi-même du multithreading, regarde plutôt par ici

  3. #3
    Membre éclairé
    Inscrit en
    Septembre 2007
    Messages
    1 137
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 137
    Points : 707
    Points
    707
    Par défaut
    merci pour le backgroundworker.
    Mais est ce que dans mon cas, je dois mettre 2 backgroundworker.
    1 pour 2 pays et 1 pour le second pays ?

    Comment lancer le meme code dans 2 threads différents ?

  4. #4
    Modérateur

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Avril 2007
    Messages
    1 996
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 996
    Points : 3 102
    Points
    3 102
    Par défaut
    En effet, si tu veux avoir deux traitements parallèles, 2 backgroundworkers seront nécessaires.
    Renseigne toi sur leur fonctionnement, tu verras qu'il est assez simple à utiliser.

  5. #5
    Membre éclairé
    Inscrit en
    Septembre 2007
    Messages
    1 137
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 137
    Points : 707
    Points
    707
    Par défaut
    A priori y'a des choses que je n'ai pas compris.

    Dans mon appli, je n'ai qu'1 bouton "import" et plusieurs progressbar.
    Cela veut dire que je dois utiliser autant de backgroundworker que de progressbar et lancer le tout sur un click de bouton.

    c'est chaud. Et si je comprends bien un backgroundworker est un thread.
    Donc 10 backgroundworker veut dire qu'il y a 10 threads en meme temps?

  6. #6
    Modérateur

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Avril 2007
    Messages
    1 996
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 996
    Points : 3 102
    Points
    3 102
    Par défaut
    Citation Envoyé par tortuegenie Voir le message
    A priori y'a des choses que je n'ai pas compris.
    Ca arrive . Le forum est là pour ça

    Citation Envoyé par tortuegenie Voir le message
    Dans mon appli, je n'ai qu'1 bouton "import" et plusieurs progressbar.
    Cela veut dire que je dois utiliser autant de backgroundworker que de progressbar et lancer le tout sur un click de bouton.
    Pas nécessairement. Tu utilises le nombre de backgroundworkers voulu. Cela dit, si tu veux lier chaque upload de fichier à une progressBar, oui, tu auras besoin d'un backgroundworker par fichier.
    Techniquement, au clic sur ton bouton d'import, tu dois lever l'event DoWork de chaque BackGroundWorker crée.

    Citation Envoyé par tortuegenie Voir le message
    c'est chaud. Et si je comprends bien un backgroundworker est un thread.
    Donc 10 backgroundworker veut dire qu'il y a 10 threads en meme temps?
    Pourquoi c'est chaud ?
    Oui, 10 backgroundworker = 10 threads.

  7. #7
    Membre éclairé
    Inscrit en
    Septembre 2007
    Messages
    1 137
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 137
    Points : 707
    Points
    707
    Par défaut
    ok donc y'a des choses que j'ai tout de meme comprises. lol

    Je vais voir comment cela se passe. Encore un petit truc.

    J'ai un seul label (compteur en parallele de la progressbar) pour les différents upload, il faut le mettre dans quel Backgroundworker ?

  8. #8
    Modérateur

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Avril 2007
    Messages
    1 996
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 996
    Points : 3 102
    Points
    3 102
    Par défaut
    Citation Envoyé par tortuegenie Voir le message
    J'ai un seul label (compteur en parallele de la progressbar) pour les différents upload, il faut le mettre dans quel Backgroundworker ?
    Je ne comprend pas très bien ta demande.
    Tu veux, à chaque fin d'uploade, mettre à jour un label avec le nombres de fichiers uploadés, c'est ca ?
    Si oui, dans l'event ProgressChanged de chaque BackGroundWorker, incrémente une variable globale et assigne le contenu de cette variable à la propriété Text de ton Label.

  9. #9
    Membre éclairé
    Inscrit en
    Septembre 2007
    Messages
    1 137
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 137
    Points : 707
    Points
    707
    Par défaut
    En fait je souhaite mettre constament ce label á jour, á chaque ligne de fichiers traités. Seulement par economie, je n'ai mis qu'1 seul label qui se remet á 0 lors du changement de fichiers.

    Je voulais juste savoir comment je pouvais gérer un label Global par rapport au backgroundworker

  10. #10
    Modérateur

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Avril 2007
    Messages
    1 996
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 996
    Points : 3 102
    Points
    3 102
    Par défaut
    Tu crées un Label basique.
    Tu crées une variable totalCount type int, globale donc accessible dans toute la classe.
    Dans l'event OnProgressChanged de chaque BackGroundWorker, tu incrémentes cette variable de 1 à chaque passage et tu agis comme ceci sur ton label :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    MonLabel.Invoke(new Action(() =>
    {
      MonLabel.Text = totalCount.ToString();
    }
    ));

Discussions similaires

  1. Application d'envoi de mail avec Windows Forms
    Par longbeach dans le forum Windows Forms
    Réponses: 3
    Dernier message: 27/12/2012, 19h35
  2. RS232 avec Windows Form sous Visual Studio 2008
    Par Jerepain dans le forum Visual C++
    Réponses: 8
    Dernier message: 14/05/2009, 18h02
  3. session timeout avec windows forms
    Par modafine dans le forum Windows Forms
    Réponses: 0
    Dernier message: 27/01/2009, 10h19
  4. Réponses: 3
    Dernier message: 27/07/2006, 09h17
  5. [C#] Look and Feel Office 2003 avec les Windows Forms
    Par vandamme dans le forum Windows Forms
    Réponses: 7
    Dernier message: 20/01/2006, 00h18

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