begin process at 2012 02 10 22:39:42
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C#

 > 

Windows

 > 

Autre

 > 

Envoi d'event tres lent


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

Envoi d'event tres lent

mardi 28 août 2007 à 11:13:46 | Envoi d'event tres lent

Blobette

Bonjour,

J'ai un petit souci : 

Je fais une application Client/Serveur en C# et j'utilise le Remoting
Je souhaite envoyer des evenement aux clients depuis le serveur

Pour que le l'envoi des evenement soient independant des reponses des clients, je veux que ce soit asynchrone et j'ai utilise le code suivant, en utilisant un thread different pour chaque envoi :

/// <summary>
/// Classe utilisée pour envoyer les évènements en utilisant des thread distincts
/// </summary>
class MyThread
{
    public delegate void ErrorHandler(Delegate d);

    public event ErrorHandler              Error;
    object[] _args;
    Delegate _target;

    public MyThread(Delegate d, params object[] args)
    {
          this._target = d;
          this._args = args;
    }
    public void Call()
    {
           System.Threading.ThreadPool.QueueUserWorkItem(new System.Threading.WaitCallback(CallDelegate));
    }
   void CallDelegate(Object stateInfo)
    {
       try
      {
             this._target.DynamicInvoke(this._args);
       }
       catch
      {
             if( Error!=null)
            {
                  Error(this._target);
            }
       }
     }
}

public void Unregister(Delegate d)
{
          _UpdateDataHandler -= (UpdateDataHandler)d;
         System.Console.WriteLine("Unregistered");
}

public void FireUpdateDataEvent()
{
            if (_UpdateDataHandler != null)
            {
                  UpdateDataHandler copie = _UpdateDataHandler;
                  foreach(Delegate d in copie.GetInvocationList())
                 {
                         MyThread t=new MyThread(d);
                         t.Error+=new MBServeur.MBFacade.MyThread.ErrorHandler(Unregister);
                        t.Call();
                  }
              }
}

Cela fonctionne tres bien, sauf la toute premiere fois ou l'evenement est envoye, le "dynamicInvoke" est tres lent (plusieurs secondes...) et je n'arrive pas a trouver pourquoi, puisqu'apres tout fonctionne parfaitement.

Donc voila, est-ce que quelqu'un peut m'aider? je ne m'en sors pas!
Je vais faire un autre post pour mon second probleme, ce sera plus clair...

Merci d'avance!

mardi 28 août 2007 à 11:25:31 | Re : Envoi d'event tres lent

tomlev

C'est peut-être lié à l'établissement de la connexion ?
Tu pourrais essayer d'envoyer un évènement bidon au démarrage, histoire que les évènements suivants soient plus rapides.
mardi 28 août 2007 à 11:42:21 | Re : Envoi d'event tres lent

Blobette

C'est qu'en faisant ca ca marche, c'est une bonne idee!
Mais le probleme, c'est que comme c'est un evenement d emise a jour d'ihm important, je ne peux pas rendre disponible l'ihm avant d'etre sure que cet evenement  fonctionne, du coup en faisant ca, je retarde l'affichage de l'ihm de plusieurs secondes! ca fait long!
donc effectivement c'est une bonne solution de contournement, mais j'ai peur que ca cache un probleme latent quelque part...

merci pour ta reponse en tout cas !




Cette discussion est classée dans : public, void, delegate, args, mythread


Répondre à ce message

Sujets en rapport avec ce message

Probleme de définition de variable [ par tiju50 ] Comme je suis débutant, J'ai voulu créer une petite application Windows pour essayer et découvrir quelques possibilités en Csharp.Grâce à mon école, j TcpClient et TcpListener une est dérivée l'autre incluse dans une class [ par Trollien ] Bonjour,je commence à pété un cable car je ne comprend pas trop ce qui ce passe alors voici les deux sources et un bout de code de l'appli.Si qqn a un Problèmes de création d'un service Windows [ par nyoto ] Bonjour à tous,Ne développant pas depuis très longtemps en .Net je galère grave pour créer un service windows récupérant automatiquement à intervalles c# [ par akodadi ] j ai un probleme j veux afficher une forme et j comprens pa ces messages d bugs public override <FONT color=#000 Faire un dispose de mon propre composant [ par fcolo ] Bonjour,j'ai réalisé un composant personnel.Ce composant ne dérive pas de Form.J'ai créer une classe vide pour le faire.Ce composant se connecte à une Forms en série... [ par immerczeck ] Bonjour!Pourriez-vous m'aider à trouver l'erreur dans ce code, à chaque fois que je clique sur le button1, une fenêtre apparaît, mais elle reste bloqu Problème POO et héritage [ par fregolo52 ] bonjour,Le novice en POOa besoin d'aide voici mon code :public class Device{  public void Update();}public class Camera : Device{   public voi Bot MSN Aide [ par Wardog56 ] Bonjour à tous voilà j'ai un probleme avec mon bot msn que j'ai programmé en C#. J'utilise comme ressource BotPlatformSDK.dll.Je souhaiterai qu'il don Progressbar [ par ddove53 ] Salut,j'utilise un progressbar et je veux que ça incrémente jusqu' Problèmes avec un Pocket PC [ par Neo020585 ] Bonjour,Je suis en train de développer une application sur un Pocket PC possédant Windows Mobile 5 et j'utilise le Compact Framework 1.Je souhaite mod


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

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

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