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 :

Choix de Methodes Asynchrones


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Juillet 2004
    Messages
    72
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 72
    Par défaut Choix de Methodes Asynchrones
    Bonjour je voulais savoir ce que vous préconisez.

    J'ai un certain nombre d'appel de fonction par seconde et je souhaiterai savoir si il est préférable d'utiliser une technique particulière pour faire des appels de fonction de manière asynchrone

    1. Utiliser les délégates et BeginInvoke
    2. Créer une Thread et lancer la fonction en mode Thread
    3. Utiliser un thread Pool (je ne sais pas faire mais je trouverai)

  2. #2
    Rédacteur
    Avatar de SaumonAgile
    Homme Profil pro
    Team leader
    Inscrit en
    Avril 2007
    Messages
    4 028
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Team leader
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2007
    Messages : 4 028
    Par défaut
    1. Cette technique n'utilise pas de thread.
    2. Peut être couteux si tu as beaucoup de threads à lancer
    3. Efficace pour de nombreuses actions assez courtes.
    Besoin d'un MessageBox amélioré ? InformationBox pour .NET 1.1, 2.0, 3.0, 3.5, 4.0 sous license Apache 2.0.

    Bonnes pratiques pour les accès aux données
    Débogage efficace en .NET
    LINQ to Objects : l'envers du décor

    Mon profil LinkedIn - MCT - MCPD WinForms - MCTS Applications Distribuées - MCTS WCF - MCTS WCF 4.0 - MCTS SQL Server 2008, Database Development - Mon blog - Twitter

  3. #3
    Membre émérite
    Profil pro
    Inscrit en
    Août 2003
    Messages
    835
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2003
    Messages : 835
    Par défaut
    Si si la première méthode utilise des threads, ceux du thread pool. Sinon effectivement le threadpool est à conseiller pour des actions relativement courtes, et surtout ne pas créer manuellement autant de threads que d'actions à effectuer ça peut s'avérer totalement contre-productif. Si les actions sont longues alors peut-être faut-il faire son propre thread pool ?

  4. #4
    Rédacteur
    Avatar de SaumonAgile
    Homme Profil pro
    Team leader
    Inscrit en
    Avril 2007
    Messages
    4 028
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Team leader
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2007
    Messages : 4 028
    Par défaut
    Citation Envoyé par Sphax Voir le message
    Si si la première méthode utilise des threads, ceux du thread pool.
    Non BeginInvoke n'utilise pas le threadpool...
    BeginInvoke ajoute un message dans la file d'éxécution non bloquante, tandis que Invoke ajoute le message dans la file bloquante.
    Je te rappelle que l'objectif de Invoke/BeginInvoke est d'éxécuter une méthode dans le thread qui possède le controle en question. Si tu comprends ça, tu réaliseras que ton affirmation n'a pas de sens.
    Besoin d'un MessageBox amélioré ? InformationBox pour .NET 1.1, 2.0, 3.0, 3.5, 4.0 sous license Apache 2.0.

    Bonnes pratiques pour les accès aux données
    Débogage efficace en .NET
    LINQ to Objects : l'envers du décor

    Mon profil LinkedIn - MCT - MCPD WinForms - MCTS Applications Distribuées - MCTS WCF - MCTS WCF 4.0 - MCTS SQL Server 2008, Database Development - Mon blog - Twitter

  5. #5
    Membre émérite
    Profil pro
    Inscrit en
    Août 2003
    Messages
    835
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2003
    Messages : 835
    Par défaut
    Citation Envoyé par SaumonAgile Voir le message
    Non BeginInvoke n'utilise pas le threadpool...
    BeginInvoke ajoute un message dans la file d'éxécution non bloquante, tandis que Invoke ajoute le message dans la file bloquante.
    Je te rappelle que l'objectif de Invoke/BeginInvoke est d'éxécuter une méthode dans le thread qui possède le controle en question. Si tu comprends ça, tu réaliseras que ton affirmation n'a pas de sens.
    Bah là tu parles de la méthode BeginInvoke d'un controle, alors que nous parlons du BeginInvoke d'un delegate ! Ce n'est pas la même chose, sur un délégate tu fais bien appel au thread pool, sur un controle effectivement on parle de file de message windows. A bon entendeur...

  6. #6
    Rédacteur
    Avatar de SaumonAgile
    Homme Profil pro
    Team leader
    Inscrit en
    Avril 2007
    Messages
    4 028
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Team leader
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2007
    Messages : 4 028
    Par défaut
    Citation Envoyé par Sphax Voir le message
    Bah là tu parles de la méthode BeginInvoke d'un controle,
    Exact.
    Citation Envoyé par Sphax Voir le message
    alors que nous parlons du BeginInvoke d'un delegate ! Ce n'est pas la même chose, sur un délégate tu fais bien appel au thread pool, sur un controle effectivement on parle de file de message windows.
    En effet, je ne sais pourquoi je suis parti sur Control.Invoke...
    Toutes mes excuses, si je fus un brin catégorique.

    Ce qui au final rend les approches 1 et 3 équivalentes.
    Besoin d'un MessageBox amélioré ? InformationBox pour .NET 1.1, 2.0, 3.0, 3.5, 4.0 sous license Apache 2.0.

    Bonnes pratiques pour les accès aux données
    Débogage efficace en .NET
    LINQ to Objects : l'envers du décor

    Mon profil LinkedIn - MCT - MCPD WinForms - MCTS Applications Distribuées - MCTS WCF - MCTS WCF 4.0 - MCTS SQL Server 2008, Database Development - Mon blog - Twitter

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

Discussions similaires

  1. Methode asynchrone qui bloque l'UI
    Par poussinphp dans le forum WinRT
    Réponses: 4
    Dernier message: 14/02/2014, 14h33
  2. App.Exit() + Method Asynchrone
    Par julien_fauquereau dans le forum Silverlight
    Réponses: 1
    Dernier message: 16/12/2011, 07h35
  3. Choix de Methode DAO ou shell ?
    Par Jertho dans le forum VBA Access
    Réponses: 4
    Dernier message: 24/06/2007, 18h54
  4. Réponses: 24
    Dernier message: 13/11/2006, 09h00

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