begin process at 2010 02 10 11:17:26
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C#

 > 

Archives

 > 

.NET

 > 

Thread Events Invoke --> Je rends les armes ....


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Thread Events Invoke --> Je rends les armes ....

mardi 29 novembre 2005 à 15:09:57 | Thread Events Invoke --> Je rends les armes ....

ylerazer

Membre Club

Bonjour,
je suis nouveau en C# et j'essaie de me faire des classes intelligentes .. mais j'ai bien peur qu'elles ne soient plus intelligentes que moi. Voici mon problème : ( j'ai enlevé les properties ... pour etre le plus synthétique possible )

au passage RV est une techno TIBCO qui permet de faire du temps réel ... ( c'est comme si on faisait de l'udp mais avec la notion de sujet auquel on souscrit ... )

public class RVConsumer :
 {
  private Thread t;
  private System.Collections.Queue myQueue;
 
  private bool isListenning = false;
  private string network;
  private string service;
  private string daemon;
  private string subject;
  
  // Constructor
  public RVConsumer(string mService, string mNetwork, string mDaemon, string mSubject)
  {
   Network = mNetwork;
   Daemon = mDaemon;
   Service = mService;
   Subject = mSubject;
  }
 
   
  //Realtime status
  public void start()
  {
   isListenning = true;
   t = new Thread(new ThreadStart(listen));
   t.Name = this.ToString();
   // listen();
  }
  public void restart()
  {
   stop();
   isListenning = true;
   t = new Thread(new ThreadStart(listen));
  }
  public void stop()
  {
   isListenning = false;
   t.Abort();
  }
  

  // Reception Message and event
  private void listen()
  {
   try
   {
    TIBCO.Rendezvous.Environment.Open();
    Transport transport = null;
    transport = new NetTransport(Service,Network,Daemon);
    Listener listener = new Listener(Queue.Default,transport,Subject,null);
    listener.MessageReceived += new MessageReceivedEventHandler(OnMessageReceived); // --> ici je place ma fonction dans la pile d'execution sur reception d'un message ...
    while (isListenning)
    {
     Queue.Default.Dispatch();
    }
    TIBCO.Rendezvous.Environment.Close();
   }
   catch (RendezvousException exception)
   {
    System.Diagnostics.Debug.WriteLine("Exception while listenning :");
    System.Diagnostics.Debug.WriteLine(exception.Message);
   }
  }
  

  
  void OnMessageReceived(object listener,MessageReceivedEventArgs messageReceivedEventArgs)
  {
   Message message = messageReceivedEventArgs.Message;
   if (myQueue == null)  {myQueue = new System.Collections.Queue();}
   myQueue.enqueue(message);  // --> et la c'est le drame ... je n'arrive pas a empiler ...
  }
  
 }
}

Pouvez vous m'aider ? et d'ou sort le Invoke que je lis partout ... sachant que la classe qui va gérer celle ci n'est pas un formulaire ???

d'avance merci

mardi 29 novembre 2005 à 15:42:29 | Re : Thread Events Invoke --> Je rends les armes ....
mardi 29 novembre 2005 à 16:00:21 | Re : Thread Events Invoke --> Je rends les armes ....

ylerazer

Membre Club
Je l'ai lu ... et voila mon problème ....


-- Ensuite, créons le délégué correspondant
--   private delegate void ChangeLabel(stringstr);
--  L’utilisation de la méthode Invoke s’effectue ainsi, dans la méthode ThreadMethod
 -- this.Invoke(newChangeLabel(ChangeLabelText), "Label après opération");


--> la classe qui gère la queue est la meme et n'a pas de méthode invoke car ce n'est pas un formulaire et c'est la que je suis perdu ...
( au passage merci pour ta réactivité ... )
mardi 29 novembre 2005 à 17:00:45 | Re : Thread Events Invoke --> Je rends les armes ....

MorpionMx

Membre Club Administrateur CodeS-SourceS
j'ai regardé un peu, le probleme, c'est qu'on peut pas specialement tester ton code.
Donc j'ai fait une mini classe toute bete qui lance un thread et qui ajoute une string dans une Queue (et pas de mauvaise interpretation s'il vous plait )
Meme si c'est pas tres beau, j'ai fais le Queue.Add() dans le thread, et ca a parfaitement fonctionné.
Donc la petite question prealable, je ne vois aucun appel a Start(), ni a t.Start() dans ton code. Est-ce normal ?

Mx
vendredi 2 décembre 2005 à 09:22:54 | Re : Thread Events Invoke --> Je rends les armes ....

MorpionMx

Membre Club Administrateur CodeS-SourceS
Pas de nouvelles ?

Bon autrement, voila comment procéder.


public void delegate addMessageDelegate;
public void AddMessage(Message message)
{
   myQueue.enqueue(message);
}


//Et dans la méthode du Thread :
AddMessageDelegate amd = new AddMessageDelegate(AddMessage);
amd.invoke(message);


Mx
dimanche 4 décembre 2005 à 08:31:20 | Re : Thread Events Invoke --> Je rends les armes ....

ylerazer

Membre Club
Bonjour,
excuse moi pour le manque de réactivité ... mais j'ai été pris par mon boulot et du coup je ne m'y suis remis que le vendredi après midi...
en fais, j'ai continuer a lire et je me dirige tout droit vers l'utilisation d'un pool de thread. Et j'irai l'interroger toutes les 250 ms pour pouvoir ensuite passer ou non un evenement a mon thread principal....

Je vais tout de meme essayer ton aide voir si j'y arrive.

Milles merci. je te tiens au courant ... ( j'ai re acces au code lundi)



Cette discussion est classée dans : message, public, string, private, thread


Répondre à ce message

Sujets en rapport avec ce message

création et utilisation d?une dll (erreur ArgumentOutOfRangeException ) [ par tendence ] Bonjour j´ai réalisé une petite application d´un client mail, dans l´état basique des choses je n´ai implémenté que les fonctionnalité de base décrite Probleme dans une classe SMTP en .NET 2 [ par walteau ] Bonsoir, je suis en pleine création d'une classe Smtp dont voici la source:using System;using System.Collections.Generic;using System.Text;using  m =S Thread et erreur [ par sheorogath ] bjr a tous , je vien d'un environnement java et ayant envi de me changer les idee j'ai decider d'essayer de faire passe une de mes programme java en c Définir une base de langue à l'aide d'Xml [ par cfz ] Bonjour, Etant un ancien développeur VB6 je souhaite me remettre au gout du jour avec .Net et C# depuis quelques jours... mais ce n'est pas toujours t Sérialization [ par RMI ] Bonjour, Je cherche à sérializer mon objet SequenceInfo ci-dessous, est ce possible et comment (je n'arrive pas à implémenter ISerializable ) ? publ Incomprehensible !!!!! [ par Mimoza222 ] Inexplicable : Vola mon code : public string Color         {             get             {   & Thread mon programme plante :( [ par badrbadr ] Salut tout le monde,Je suis en train de travailler sur une application qui prend des captures d'écran de pages web. J'utilise pour cela le contrôle We Probleme thread ==> Crossed Thread [ par julbuttt ] Bonjour, voila en faite j'utilise deux thread qui s'executent en //, un qui sert a l'emission de données et l'autre a la reception . Je recupere les d technique de sauvegarde données sensibles [ par fcolo ] Bonjour,Je réalise une apllication qui consiste à visualisée le flux vidéo de caméra IP.L'utilisateur doit fournir des paramétres pour réceptionner ce Thread.Abort() [ par nico4nicolas ] Bonjour, Pour la premiere fois, j'utilise les threads alors, pour me faire la main j'ai fait un petit programme pour voir comment ca fonctionne, j'ai


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,421 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales