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 :

Execution dans un autre thread


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de gaetan13
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2010
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2010
    Messages : 90
    Par défaut Execution dans un autre thread
    Bonjour,

    J'ai une petite question concernant les thread.
    J'ai une classe (qu'on va appeler class1) instanciée dans une autre (class2).

    Dans class1 j'ai une boucle d'écoute d'un port série, dans un thread.Je dois appeler une fonction qui ne doit pas être exécutée
    depuis le thread * car je n'ai pas envie que son code bloque la boucle....

    Du coup j'ai fais pas mal de tests (delegate etc) et à tous les coups la fonction est exécutée depuis le thread ce qui bloque ma lecture.

    L'idéal serait que depuis le thread du port je lance une fonction dans la classe qui soit bien exécutée dans le thread de la classe.

    Merci d'avance

    *Edit : Enfin, on appelle son exécution depuis le thread mais c'est un autre thread qui l'execute.

  2. #2
    Membre Expert


    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2006
    Messages
    970
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

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

    Informations forums :
    Inscription : Avril 2006
    Messages : 970
    Par défaut
    Jette un peu un œil au BackGroundWorker qui je pense pourrais t'aider
    Articles sur les technologies .NET

    Une réponse vous a aidé ? utilisez le bouton

    Votre problème est résolu ? utilisez le bouton

  3. #3
    Membre confirmé Avatar de gaetan13
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2010
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2010
    Messages : 90
    Par défaut
    Merci, mais je vois pas trop en quoi le backgroundworker réglerait mon problème de thread ?

  4. #4
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 198
    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 198
    Par défaut
    un thread n'est pas lié à une classe

    si tu une instance de controle sous la main :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    lecontrol.begininvoke(délégué ou action)

    tous les controles ne peuvent être modifiés depuis le thread principal, aussi microsoft a mis l'outillage nécessaire sur la classe control permettant de mettre sur la pile du thread principal un appel à une méthode
    .invoke et .begininvoke (begininvoke étant non bloquant)


    il y a d'autres moyens, c'est peut etre aussi faisable avec le bgw
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  5. #5
    Membre confirmé Avatar de gaetan13
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2010
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2010
    Messages : 90
    Par défaut
    Merci, le problème de ces fonctions est quelles sont utilisables uniquement sur form, or je ne sais pas ou la fonction se situe : peut être dans une classe.

    Mais pour faire simple il faut que je lance une fonction depuis le thread crée mais qui ne va pas bloquer son execution, qu'elle s'execute dans le thread principal de l'application.

    Je sais pas si je suis très compréhensible.

  6. #6
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 198
    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 198
    Par défaut
    Citation Envoyé par gaetan13 Voir le message
    Je sais pas si je suis très compréhensible.
    non ... j'avais eut du mal à comprendre ton 1er post, mais là c'est pire, surtout que je pense avoir répondu à la question
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  7. #7
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 198
    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 198
    Par défaut
    Citation Envoyé par Pol63 Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    lecontrol.begininvoke(délégué ou action)
    tous les controles ne peuvent être modifiés depuis le thread principal, aussi microsoft a mis l'outillage nécessaire sur la classe control permettant de mettre sur la pile du thread principal un appel à une méthode
    .invoke et .begininvoke (begininvoke étant non bloquant)


    il y a d'autres moyens, c'est peut etre aussi faisable avec le bgw
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  8. #8
    Membre confirmé Avatar de gaetan13
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2010
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2010
    Messages : 90
    Par défaut
    Bien sur l'utilisateur peut utiliser cela mais j'aimerais qu'il n'ai pas à le faire. Et je ne peut pas le faire à sa place (enfin si c'est le cas je sais pas comment...)

Discussions similaires

  1. Appeler un executable dans une autre application
    Par highlight dans le forum C++
    Réponses: 13
    Dernier message: 20/04/2010, 16h24
  2. thread dans un autre thread
    Par lolo le belge dans le forum MFC
    Réponses: 2
    Dernier message: 13/01/2008, 20h57
  3. [.NET 2.0] Traitement graphique Lourd, exécuter dans un autre thread?
    Par jazz matazz dans le forum Général Dotnet
    Réponses: 2
    Dernier message: 28/04/2007, 23h42
  4. Réponses: 1
    Dernier message: 17/03/2007, 21h21
  5. [C#] Comment appeler une fenêtre modale dans un autre thread ?
    Par Pilloutou dans le forum Windows Forms
    Réponses: 6
    Dernier message: 05/10/2006, 11h19

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