bonjour,
mon programme exécute un thread qui génère des chiffres.
savez vous comment récupérer les chiffres qu'il génère a partir d'une autre classe ?
bonjour,
mon programme exécute un thread qui génère des chiffres.
savez vous comment récupérer les chiffres qu'il génère a partir d'une autre classe ?
Tu stockes les données calculées par ton thread dans un objet type Collection/List/etc .... en prenant soin de synchroniser par un lock l'écriture et la lecture de la collection/list/etc .....
Typiquement, si tu veux consommer au fur et à mesure que ton thread calcul, tu peux utiliser un objet Queue :
- ton thread de calcull met en Queue ses calculs.
- ton thread consommateur les de-queue au fur et à mesure.
Je ne réponds pas aux questions techniques par MP ! Le forum est là pour ça...
Une réponse vous a aidé ? utiliser le bouton
"L’ennui dans ce monde, c’est que les idiots sont sûrs d’eux et les gens sensés pleins de doutes". B. Russel
J'ai une classe qui simule un serveur et qui génère des nombre aléatoires.
de l'autre coté j'ai une classe qui doit récupérer ces données.
Ce que je ne comprend pas c'est que dans ma classe qui doit récupérer les données je doit forcement faire un appel au serveur et dans ce cas un deuxième thread est lancé .....
Essaye d'énoncer ta demande plus clairement, car je ne comprends pas où est ton problème.
Je ne réponds pas aux questions techniques par MP ! Le forum est là pour ça...
Une réponse vous a aidé ? utiliser le bouton
"L’ennui dans ce monde, c’est que les idiots sont sûrs d’eux et les gens sensés pleins de doutes". B. Russel
J'ai un classe WorkerServer qui lance un thread qui calcul un nombre aléatoire.
Et j'ai une autre classe Module qui doit récupérer ces nombres.
Comment je dois procéder dans la classe Module ?
Pour le moment j'instancie un new WorkerServer pour récupérer le nombre mais cela ne marche ....
Je t'ai pourtant fourni la réponse au dessus (une possibilité, il y en a bien sur beaucoup d'autres) : utilise une instance d'un objet Queue alimentée par ton générateur et lue par ton consommateur.
Qu'est ce qui te semble difficile ici ?
Je ne réponds pas aux questions techniques par MP ! Le forum est là pour ça...
Une réponse vous a aidé ? utiliser le bouton
"L’ennui dans ce monde, c’est que les idiots sont sûrs d’eux et les gens sensés pleins de doutes". B. Russel
Tiens, un exemple torché en 2 mn d'un objet qui une fois instancié génére des nombres aléatoires, les mets dans un objet Queue<int> qui est lue par le consommateur :
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
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44 static void Main(string[] args) { Queue<int> _queue = new Queue<int>(); RandomGenerator gen = new RandomGenerator(_queue); while(true) { int? v = null; lock(_queue) { if(_queue.Count > 0) { v = _queue.Dequeue(); } } if (v != null) { Console.WriteLine((int)v); } } } private class RandomGenerator { private Queue<int> _queue; private Random _rnd = new Random(); public RandomGenerator(Queue<int> queue) { _queue = queue; Thread thread = new Thread(generate); thread.Start(); } private void generate() { while (true) { Thread.Sleep(20); int v = _rnd.Next(); lock (_queue) { _queue.Enqueue(v); } } } }
Je ne réponds pas aux questions techniques par MP ! Le forum est là pour ça...
Une réponse vous a aidé ? utiliser le bouton
"L’ennui dans ce monde, c’est que les idiots sont sûrs d’eux et les gens sensés pleins de doutes". B. Russel
Je suis d'accord mais la c'est le consommateur qui instancie l'objet.
Mais comment faire quand l'objet qui calcul les nombres aléatoires et le consommateur sont lancés dans deux programmes différents ?
Je veux dire avec deux main ....
C'est quand même bizarre de poser une question sur un problème (communicaton inter-thread) pour dire, une fois que tu as la solution que en réalité, le problème n'est pas la communicaton inter-thread mais la communication interapplication.
On pourrait presque penser que tu te payes un peu notre tête.
Bon, passons.
Dans ce cas, utilise WCF pour communiquer entre les deux applications.
il y a d'autres méthodes mais c'est ou plus restreint ou/et plus compliqué :
- Mémoire partagé (suppose que les deux applis soient sur la même machine).
- NamedPipe : plus compliqué à utiliser que WCF
- Remoting : daté et plus compliqué à utiliser que WCF
etc ..... (et bien sir je passe sur les technos franchement datées comme les MailSlots - si ça existe encore ? - , le RPC, etc ....)
Je ne réponds pas aux questions techniques par MP ! Le forum est là pour ça...
Une réponse vous a aidé ? utiliser le bouton
"L’ennui dans ce monde, c’est que les idiots sont sûrs d’eux et les gens sensés pleins de doutes". B. Russel
Non mais, dans un programme ce n'est pas possible de créer deux "sous programme" qui se lance en même temps ?
Un qui génère, l'autre qui récupère ou écoute.
En gros un Thread pour chaque "sous programme" avec le Thread qui écoute qui stock ce qu'il "entends"
Parce que dans ton programme c'est le consommateur qui lance le Thread du générateur.
Moi ce que je cherche c'est que personne n'ai besoin de lancer le Thread du générateur.
Bon, moi je laisse tomber, car tu refuses d'exposer ton besoin clairement.
Tu changes de version d'un message à l'autre. je te cite :
Terminé pour ma part.Mais comment faire quand l'objet qui calcul les nombres aléatoires et le consommateur sont lancés dans deux programmes différents
Je ne réponds pas aux questions techniques par MP ! Le forum est là pour ça...
Une réponse vous a aidé ? utiliser le bouton
"L’ennui dans ce monde, c’est que les idiots sont sûrs d’eux et les gens sensés pleins de doutes". B. Russel
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager