begin process at 2012 02 09 12:14:06
  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 Avec un point d'arrêt, ça marche nickel, autrement c'est la cata [ par lol236 ] Bonjour, je m'entraîne sur C# depuis peu. j'ai un bug depuis hier et je n'arrive pas à trouver la solution. je dois faire un logiciel permettant de gé Aide sur le DataBinding [ par jrivet ] Bonjour à tous, Une fois de plus je reviens vers vous. J'ai déjà utilisé le DataBindings (de manière simple) avant et cela fonctionnait mais la je do Aide pour améliorer une classe SMTP [ par Yanith ] Bonjour, Je voudrait déjà commencer pas dire que je trouve beaucoup d'inspiration sur se site, cela m'aide beaucoup dans mon travail. Je n'ai pas pou redemarrage d'un Thread apres un abort [ par johnnous ] Bonjour j'utilise 2 Thread le 1er est une boucle sans fin et je veux à partir de mon 2eme Thread arrêter le 1er s'il est trop long voici le sources xml Parsing sur WP7 [ par MariamKh ] Bonjour, j'ai crée un code en c# (sur Windows Phone 7) qui affichera des données extraites d'un fichier xml, mais il ne fonctionne pas ou il m'affiche l'index se trouve en dehors des limites du tableau (débutant) [ par soft57 ] Bonjour, J'ai un TP à rendre, mais j'ai une erreur que je n'arrive vraiment pas à résoudre. Voici l'énoncé : [quote]Initialiser un tableau de 5 mot menu contextuel windows explorer [ par WieWeet ] bonjour, j'ai récupéré ( http://www.codeproject.com/KB/cs/shellContextMenu.aspx ) un exemple qui affiche le menu contextuel de windows explorer. je l' Problème requête SQL [ par othmanseqat ] Bonjour à tous, En faite j'essaye de requêter directement sur ma DB pour récupérer les enregistrement via mon service web et par la suite les formater


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
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,983 sec (3)

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