IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

communication avec un autre processus deja lancé


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 15
    Par défaut communication avec un autre processus deja lancé
    Bonjour,

    Je voudrais empêcher mon application de se lancer plusieurs fois et dans ce cas la demander à l'instance B d'envoyer (avant de se fermer) un message à l'instance A.
    Je sais comment empêcher la deuxième instance, mais pas comment envoyer un message à la première.
    J'ai trouvé de nombreux exemples qui montrent comment écrire sur l’entrée standard d'un autre processus mais uniquement quand c'est le programme lui même qui a lancé la deuxième instance.

    Merci d'avance,
    Joccd

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    2 210
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 210
    Par défaut
    Salut,

    Des solutions envisageables pour réaliser ce que tu veux faire :
    • Faire de la com entre tes applications (il y a plusieurs solutions : WCF par exemple)
    • Utiliser une sorte de mémoire partagée (variable dans la base de registre, ou fichier, ...) et un timer côté application qui scrute cette variable pour voir si elle a été modifiée

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    1 002
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 1 002
    Par défaut
    Yop,

    Cherche du coté des IPC: Named Pipes

    C'est la bonne pratique dans ton cas:
    canal nommé + isolation d'une instance par un mutex
    Rapide, sécurisé & efficace en .Net 2.0 (en 4.0 WCF peut apporter d'autre solution envisageable peut etre)

    Un seul exécutable peut jouer le rôle de client et de serveur:
    Pseudo code:
    T essaye d'ouvrir le mutex (OpenExisting) (l'astuce pour obtenir un nom unique sur la machine c'est de concaténer ton namespace avec le numéro de la session windows)
    si tu y arrive alors on tu te mets en mode client et tu communique en IPC
    Si le try échoue alors tu crée le mutex (mutex = new Mutex(true, ChannelName, out createNew) et tu lance le serveur IPC (voir du coté IpcServerChannel / ChannelServices.RegisterChannel)

    voila,
    Si t'a un souci au bout de 5 minutes (ton garbage collector le jou agressif en release et delete ton server / MarshalByRefObject)
    tu peux ajouter ca dans ta class qui dérive de MarshalByRefObject
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
                public override object InitializeLifetimeService()
                {
                    return null;
                }

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 15
    Par défaut
    merci pour vos reponses

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Communication avec un autre logiciel.
    Par Erwaan dans le forum VB.NET
    Réponses: 3
    Dernier message: 23/11/2011, 09h31
  2. Communication avec d'autres applications windows
    Par anytos268 dans le forum Interfaces Graphiques en Java
    Réponses: 1
    Dernier message: 13/11/2009, 14h23
  3. Réponses: 0
    Dernier message: 16/03/2009, 09h36
  4. Projet lancé avec une autre application..COMMENT?
    Par zentaf dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 11/04/2007, 09h57
  5. Réponses: 10
    Dernier message: 21/02/2007, 09h58

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo