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 :

Détecter exécution d'une méthode dans une autre méthode


Sujet :

C#

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 57
    Par défaut Détecter exécution d'une méthode dans une autre méthode
    Bonjour,
    Voila, j'aurais besoins qu'une méthode puisse détecter l'exécution d'une autre méthode. Apparemment, il doit y avoir une histoire d'event mais je comprends pas grand chose à ça. Pour détailler un peu :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
     
    public void methode1(arg1, arg2)
    {
    }
     
    public void methode2()
    {
            while(true)
            {
                    if (exécution methode1)
                    {
                    }
            }
    }
    voila,
    merci par avance

  2. #2
    Membre Expert Avatar de Tober
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2007
    Messages
    824
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 824
    Par défaut
    Tu peux cree un evenement a toi que tu lance dans method1 et que tu catch dans method2, il y a aussi une possibilite, tu utilises un booleen...
    au depart le booleen est a false, qd tu passe ds method1 tu le met a true, et method2 boucle tant que le booleen n'est pas true...

    Mais fais gaffe, un while(true) va bloquer l'application... sauf si tu utilises un thread !

    Explique voir ce que tu veux faire concretement...

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 57
    Par défaut
    J'utilise un Thread
    En dans mon application j'ai un thread définit avec une boucle infinie. Dans ma boucle, j'effectue des opération à intervalle de temps définit (via Thread.Sleep("une minute").
    Toutefois je dois également pouvoir effectuer ces opérations manuellement et relancé le Thread.Sleep("une minute").

    Comment faire pour forcer le thread à "se réveiller" ? (mon thread est en variable d'instance de ma fonction)

  4. #4
    Membre éclairé
    Profil pro
    Étudiant
    Inscrit en
    Avril 2008
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2008
    Messages : 49
    Par défaut
    ta méthode 1 doit propager un événement
    et la methode 2 serat en écoute de cet événement

    un événement:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public class EventSearch : EventArgs{...}
    déclaration de l'événement dans la classe ou il est utilisé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
            /// <summary>
            /// le délégué associé a l'event OnAction 
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            public delegate void searchHandler(object sender, EventSearch e);
            /// <summary>
            /// l'evenement OnAction est produit lors d'un appelle sur l'une des methode authfail, read ou write
            /// </summary>
            public event searchHandler OnAction;
    lancement de l'événement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    EventSearch e = new EventSearch(TypeEvent.write, msg);
                OnAction(this, e);
    dans la classe qui doit traiter l'événement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    client.OnAction += new client.MyHandler(monhandle);
    public void monhandle(object sender, EventSearch e) {..}
    c'est surement pas parfait, mais ca marche chez moi

    sinon aprés ya la methode sale:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    class truc{
      public boolean exec=false;
      methode1(){
        exec=true;
        //code
        exec=false.
     }
    }
     
    public void methode2()
    {
            while(true)
            {
                    if (InstanceTruc.exec==true)
                    {
                    }
            }
    }

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 57
    Par défaut
    Citation Envoyé par xx_FiFty_xx Voir le message
    J'utilise un Thread
    En dans mon application j'ai un thread définit avec une boucle infinie. Dans ma boucle, j'effectue des opération à intervalle de temps définit (via Thread.Sleep("une minute").
    Toutefois je dois également pouvoir effectuer ces opérations manuellement et relancé le Thread.Sleep("une minute").

    Comment faire pour forcer le thread à "se réveiller" ? (mon thread est en variable d'instance de ma fonction)

  6. #6
    Membre Expert
    Avatar de hed62
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2007
    Messages
    2 029
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 029
    Par défaut
    Faire des Thread avec des Sleep et des boucles infinie, vouloir les réveiller manuellement, tout cela n'est pas de bonnes pratiques de programmation.

    La programmation par évènements répond parfaitement à ton besoin, et d'une manière correcte. Tu devrais opter pour cela.

    sinon, je ne sais pas comment on force un thread à se réveiller.

Discussions similaires

  1. Réponses: 4
    Dernier message: 15/10/2009, 13h33
  2. [XL-2007] Afficher une checkbox dans une feuille si une checkbox d'une autre feuille est cochée
    Par JessieCoutas dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 18/08/2009, 13h35
  3. portée d'une variable dans une fonction dans une méthode
    Par laurentg2003 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 29/06/2009, 19h05
  4. [POO] dans une classe, appeler une fonction dans une méthode
    Par arnaudperfect dans le forum Langage
    Réponses: 3
    Dernier message: 26/08/2007, 23h04
  5. Recherche une valeur d'une cellule dans une colonne d'une autre feuille
    Par kourria dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 21/06/2007, 13h48

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