Comment appeler une fonction dans un Thread déjà lancé ?

lunnorey Messages postés 39 Date d'inscription dimanche 11 octobre 2009 Statut Membre Dernière intervention 9 mai 2015 - Modifié par lunnorey le 18/10/2013 à 22:58
lunnorey Messages postés 39 Date d'inscription dimanche 11 octobre 2009 Statut Membre Dernière intervention 9 mai 2015 - 20 oct. 2013 à 17:41
Bonjour,

Je suis actuellement bloqué par un problème de Thread. Je voudrais appeler une fonction dans une classe qui se trouve être dans un Thread.

Pour vous faire comprendre, si je m'exprime mal.
public class classThread {
 private bool fin ;
 public void init(){
  fin = 0;
 }
 public void fonctionCible(){
  ' à exécuter
  fin = 1;
 }
}

class Program {
        static void Main(string[] args) {
   classThread cT = new classThread();
   Thread myThread = new Thread(new ThreadStart(cT.init()));
   ' Celà ne fonctionnne évidement pas mais c est le principe.
   cT.fonctionCible(); 
  }
}


--

2 réponses

NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 159
18 oct. 2013 à 23:26
Bonsoir,

Cet appel doit être fait dans le thread.

Une fonction peut être appelée par plusieurs thread.

Tu peux aussi gérer une pile d'appels à faire avec un Queue<T> de Delegate.
1
lunnorey Messages postés 39 Date d'inscription dimanche 11 octobre 2009 Statut Membre Dernière intervention 9 mai 2015 3
18 oct. 2013 à 23:31
Pourrais-tu écrire un exemple en utilisant celui déjà existant, s'il te plait ? J'ai du mal à comprendre :/
0
NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 159
18 oct. 2013 à 23:33
 public void init(){
  fin = 0;
fonctionCible();
 }
0
lunnorey Messages postés 39 Date d'inscription dimanche 11 octobre 2009 Statut Membre Dernière intervention 9 mai 2015 3
18 oct. 2013 à 23:37
Oui, c'est une solution mais dans ce cas là, le but et de lancer la fonction de l'extérieur du Thread.
- Le thread est lancé, il fonctionne en continu, fais son travaille
- Sur la console ont souhaite appeler une fonction de la class dans le thread..
Je sais pas si tu m'as bien compris, je suis pas sur que ce soit explicite..
0
NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 159
19 oct. 2013 à 00:08
Donc ton problème est de faire une file d'attente pour les appels d'un thread vers un autre.

Renseignes-toi sur les Delegate et sur la classe Queue<T>.
Attention, regardes aussi l'instruction "Lock".

Dans le principe, le thread principal va "empiler" un Delegate dans la file du thread, quand le thread sera libre, il va prendre le prochain Delegate disponible.

Il te faudra faire une boucle pour maintenir le thread actif et ne pas oublier d'envoyer un signal d'arrêt au thread (méthode à voir).
1
lunnorey Messages postés 39 Date d'inscription dimanche 11 octobre 2009 Statut Membre Dernière intervention 9 mai 2015 3
20 oct. 2013 à 12:22
Bonjour, j'ai effectuer des recherches mais ça n'a pas abouti.. Pourrais-tu m'aider avec un exemple ?
0
NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 159
20 oct. 2013 à 15:02
Dans ton thread :
Tant que je peux tourner :
Si il y a quelques chose dans la file des Delegate
Executer le Delegate
Sinon
Pause
FinSi
FinTantQue

Il te faut une file d'attente, en variable globale, de Delegate
0
lunnorey Messages postés 39 Date d'inscription dimanche 11 octobre 2009 Statut Membre Dernière intervention 9 mai 2015 3
20 oct. 2013 à 17:41
0
Rejoignez-nous