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 :

Différence entre un thread et un backgroundworker


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de istace.emmanuel
    Homme Profil pro
    Senior Full-Stack .Net Developer
    Inscrit en
    Août 2009
    Messages
    125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Belgique

    Informations professionnelles :
    Activité : Senior Full-Stack .Net Developer
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2009
    Messages : 125
    Par défaut Différence entre un thread et un backgroundworker
    Bonsoir à tous
    Je pense que tout est dans le titre...
    Je ne comprend pas la différence entre les deux
    A part le "contrôle" que fournit le BkgWorker, qu'est ce qui le différencie avec un thread ?
    Pourquoi suis-je obligé d'utiliser des BkgWorker sur un appli "serveur" avec un GUI WPF et que les thread freeze mon GUI ?


    Merci d'avance

    Istace Emmanuel

  2. #2
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 494
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 494
    Par défaut
    http://msdn.microsoft.com/fr-fr/magazine/cc163328.aspx
    BackgroundWorker n'est pas un thread, il se sert de thread pour faire se qu'il a à faire.
    Application Serveur + WPF, c'est bizarre, une application n'a généralement pas d'IHM.
    Attention, en WPF comme dans les autres technologies graphiques sous Windows, seul le thread créateur des fenêtres est à même de modifier les propriétés "Kernel" des fenêtres.

  3. #3
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 197
    Par défaut
    pour compléter

    une application (processus) peut avoir plusieurs threads
    chaque thread s'exécute en meme temps et permet soit de ne pas bloquer l'interface, soit d'augmenter sensiblement les performances, les processeurs d'aujourd'hui ayant de plus en plus de cores

    quand on effectue un traitement sur le thread principal, l'interface est figée
    (par exemple obtenir beaucoup de données d'une base, faire des calculs complexes etc...)
    utiliser un autre thread devient alors nécessaire

    l'interface (les controles) ne peuvent etre modifiés que par le thread principal de l'application (avec un peu de chance on doit pouvoir lire des propriétés dessus depuis un autre thread par contre)

    quand on est sur un thread autre que le thread principal et qu'on veut modifier l'interface, il faut alors repasser temporairement sur le thread principal puis revenir sur le thread autre pour continuer
    ceci ce fait avec des délégués

    le backgroundworker est une encapsulation de pas mal de choses utiles en multithreading
    il permet de démarrer le thread, de gérer un pool, il a aussi 2 évènements qui sont déclenchés sur le thread principal dans lesquels ont peut passer des objets, ce qui permet de ne pas s'embeter avec les délégués
    il a aussi une méthode CancelAsync mais qui n'est pas automatique, c'est au développeur d'implémenter ca méthode d'arret propre du traitement
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

Discussions similaires

  1. Réponses: 1
    Dernier message: 17/08/2010, 11h57
  2. [Thread] différence entre les méthodes start/run
    Par maetalkrio dans le forum Débuter avec Java
    Réponses: 3
    Dernier message: 20/10/2009, 17h06
  3. Différence entre Thread et ThreadLocal
    Par fantomasmusic dans le forum Concurrence et multi-thread
    Réponses: 2
    Dernier message: 27/10/2008, 14h31
  4. Réponses: 5
    Dernier message: 14/08/2008, 11h25
  5. Différence entre process et thread
    Par Mastero dans le forum MFC
    Réponses: 6
    Dernier message: 19/07/2005, 13h52

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