[C#] Communication Interprocess en local

Signaler
Messages postés
2
Date d'inscription
vendredi 7 juillet 2006
Statut
Membre
Dernière intervention
4 février 2008
-
Messages postés
1160
Date d'inscription
vendredi 23 juillet 2004
Statut
Membre
Dernière intervention
21 octobre 2010
-
Bjr,

J'aimerais lancer une meme application plusieurs fois et qu'à partir de
la seconde fois, l'application comprend que l'application est deja
lancée, et lui envoit alors des petites données, et quitte...

j'ai trouvé le moyen de faire ca avec du remoting .Net, seulement
je trouve ca un peu lourd de devoir utiliser un protocol reseau en
local (firewall à la grouille sur la machine user... entre autre
restriction...)

si quelqu'un a une solution miracle, générique, et pas trop complexe à mettre en oeuvre... je suis preneur !

On m'a parlé de EventWaitHandle et de thread... mais je ne suis novice dans le domaine des treads

merci d'avance

6 réponses

Messages postés
233
Date d'inscription
vendredi 21 mars 2003
Statut
Membre
Dernière intervention
25 octobre 2010

tu pourrais reprendre le principe du singleton et l'adapter a ton besoin

en te basant sur ce code, tu devrais pouvoir faire quelque chose de bien:
http://www.csharpfr.com/codes/SINGLETON-CODE-SNIPPET_36437.aspx

grosso modo il s'agit d'avoir une variable qui te dis si t'as une instance deja en cours, et a chaque demarrage de l'application, tu teste cette variable...

Nul ne devient grand par la guerre...
Messages postés
2
Date d'inscription
vendredi 7 juillet 2006
Statut
Membre
Dernière intervention
4 février 2008

[auteur/MILTIADES/72191.aspx Miltiades]



Hum.... pas mal jvais voir ca de suite, je te remerci de ton intervention interressante, et d'avoir aussi pris le temps de me repondre
Messages postés
3246
Date d'inscription
lundi 25 avril 2005
Statut
Modérateur
Dernière intervention
27 octobre 2012
38
Messages postés
1024
Date d'inscription
mardi 4 février 2003
Statut
Membre
Dernière intervention
7 juin 2010
63
Euh...

Sauf erreur, les membres statiques sur lesquels s'appuient les singletons ne sont pas cross-application.
Tu dois à mon avis garder du remoting si tu veux passer des inforamtions d'une appli à une autre.
Mais si tu es en .net 2.0 ou plus, tu peux utilser IPC (Inter Process Communications)

Amicalement, SharpMao

"C'est pas parce qu'ils sont nombreux à avoir tort qu'ils ont raison!"
(Coluche / 1944-1986 / Pensées et anecdotes)
Messages postés
233
Date d'inscription
vendredi 21 mars 2003
Statut
Membre
Dernière intervention
25 octobre 2010

c'est à un mutex que je pensais, mais j'avais perdu le nom ^^ (ca fait un moment que j'ai pas utiliser ces trucs)

Nul ne devient grand par la guerre...
Messages postés
1160
Date d'inscription
vendredi 23 juillet 2004
Statut
Membre
Dernière intervention
21 octobre 2010
18
si tu utilise un mutex :
-Attention a bien utiliser un mutex de portée systeme et a le réouvrir comme il faut (regarde dans la msdn la doc de Mutex.OpenExisting qui te montrera un modèle d'utilisation de mutex de ce type).
-Attention a bien libérer le mutex dans TOUS les cas (il faut donc traiter les exceptions non gérées de l'application en libérant le mutex, la fermeture normale de l'appli, etc) autrement en cas de crash de l'appli (ce qui peux toujours arriver meme si tu as confiance en ton code) le mutex ne sera pas libéré. Il te restera toujours le cas du CTRL+ALT+SUPPR pour fermer ton appli qui empechera de libérer le mutex et qui forcera a reboot pour relancer l'appli.

Le mutex est une solution intéressante et puissante, mais contraignante