[C#] Communication Interprocess en local

alavoler Messages postés 2 Date d'inscription vendredi 7 juillet 2006 Statut Membre Dernière intervention 4 février 2008 - 4 févr. 2008 à 10:40
leprov Messages postés 1160 Date d'inscription vendredi 23 juillet 2004 Statut Membre Dernière intervention 21 octobre 2010 - 4 févr. 2008 à 15:19
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
A voir également:

6 réponses

Miltiades Messages postés 233 Date d'inscription vendredi 21 mars 2003 Statut Membre Dernière intervention 25 octobre 2010
4 févr. 2008 à 10:47
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...
0
alavoler Messages postés 2 Date d'inscription vendredi 7 juillet 2006 Statut Membre Dernière intervention 4 février 2008
4 févr. 2008 à 11:24
[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
0
Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 41
4 févr. 2008 à 11:43
0
SharpMao Messages postés 1024 Date d'inscription mardi 4 février 2003 Statut Membre Dernière intervention 7 juin 2010 69
4 févr. 2008 à 12:08
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)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Miltiades Messages postés 233 Date d'inscription vendredi 21 mars 2003 Statut Membre Dernière intervention 25 octobre 2010
4 févr. 2008 à 12:49
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...
0
leprov Messages postés 1160 Date d'inscription vendredi 23 juillet 2004 Statut Membre Dernière intervention 21 octobre 2010 17
4 févr. 2008 à 15:19
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
0
Rejoignez-nous