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 :

Priorité sur thread mainform


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2008
    Messages
    102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juin 2008
    Messages : 102
    Par défaut Priorité sur thread mainform
    Bonjour,

    Je suis en train de développer une application multi thread avec le backgroundWorker pour établir une communication bluetooth avec un module Mindstorm NXT. Tout va bien sauf que mon application est considérablement ralentit. J'ai une boucle while dans Mon background worker qui tourne en permanence une fois la communication etablit. Du coup j'ai l'impression que le background worker a la priorité sur le thread de la mainform et du coup mon application n'est plus fluide du tout.
    Comment rendre la priorité au thread du mainform afin que mon application reste fluide ou existe t'il un moyen de garder la main sur la mainform sans ralentir le background worker.

    merci d'avance.

  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 : 43
    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
    Il y une propriété Priority dans la classe Thread. Mais à mon avis le thread du BGW n'a pas une plus grande priorité que le thread de l'UI... ça doit simplement être que ta boucle bouffe du CPU inutilement. Rajoute un petit Sleep(0) dans ta boucle, histoire que le thread du BackgroundWorker rende la main plus souvent.

  3. #3
    Membre confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2008
    Messages
    102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juin 2008
    Messages : 102
    Par défaut
    deja essayé ^^, j'avai mis un thread.sleep(250) mais aucun effet, je ne pense pas que le thread monopolise le cpu unitilement car vu le code dans le corp de la boucle while ya assez a faire XD. de plus disposant d'un intel core I7 a 2.80Ghz et le monitorant en direct il est pas surcharger du tout. a peine 10% d'augmentation sur un 1 core. par contre mon application est lente mais le reste du systeme lui est fluide c'est la que je ne comprend pas.

  4. #4
    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 : 43
    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 fais des appels au thread UI à partir de ton BGW (Invoke ou ReportProgress) ?

  5. #5
    Membre confirmé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2006
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juillet 2006
    Messages : 30
    Par défaut
    Salut,

    Tu pourrais utiliser la classe Thread à la place du BackgroundWorker, d'attribuer la propriété adéquate (BelowNormal genre) tel que mentionné plus haut. Si tu as besoin de faire des mises à jour sur l'état des opérations dans le UI, tu n'auras qu'à pousser ces informations sur le Thread UI depuis ton Thread de traitement.

    Qu'en penses-tu ?

  6. #6
    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 : 43
    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
    Citation Envoyé par kzrystof Voir le message
    Tu pourrais utiliser la classe Thread à la place du BackgroundWorker, d'attribuer la propriété adéquate (BelowNormal genre) tel que mentionné plus haut.
    Pas la peine de créer un thread explicitement, tu peux tout à fait le faire dans un BackgroundWorker :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Thread.CurrentThread.Priority = ThreadPriority.BelowNormal;

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

Discussions similaires

  1. priorité sur des threads
    Par kiby56 dans le forum Général Python
    Réponses: 1
    Dernier message: 24/02/2013, 16h37
  2. [LOG4J] Définir plusieurs priorités sur un projet
    Par FredKéKé dans le forum Logging
    Réponses: 1
    Dernier message: 10/01/2007, 12h18
  3. Priorités sur SQL Serveur 2000
    Par Oluha dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 12/12/2006, 15h42
  4. une question sur thread
    Par LN(a) dans le forum Delphi
    Réponses: 5
    Dernier message: 04/09/2006, 11h32

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