Application à instance unique

Le
Gilbert Tordeur
Bonjour,

J'ai écrit trois applications Windows à instance unique (appelons-les A1,A2
et A3), publiée sur un serveur de fichiers. L'une d'entre elles (A1) est un
menu qui permet de lancer les autres :

Dim proc As Process = New Process()
proc.StartInfo = New ProcessStartInfo(CheminExecutable)
proc.Start()

Quand A1 lance A2, aucun problème. Mais quand A1 lance A3, j'ai le temps de
voir le chargement de A3, qui aussitôt se termine.

Si je lance A3 seule, à partir du même CheminExecutable, pas de problème. Si
je republie A3 après avoir décoché la case «Application à instance unique»,
A1 peut la lancer !

Tout se passe donc comme si A3 reconnaissait en A1 un double d'elle-même,
alors que ce n'est pas le cas pour A2.

À la main, je peux aussi lancer A3 après avoir lancé A2. Par contre, je ne
peux pas lancer A1 si A3 est déjà chargé (au moins il y a une certaine
cohérence dans cette symétrie !).

Quelqu'un a-t-il une idée d'explication ? de solution ? Cela pourrait-il
avoir un lien avec la création d'une application Windows à partir d'un
modèle ?

Merci d'avance,
Gilbert Tordeur
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Gilles TOURREAU [MVP]
Le #12214991
Le Thu, 10 Jan 2008 12:15:58 +0100, Gilbert Tordeur

Bonjour,

J'ai écrit trois applications Windows à instance unique (appelons-les
A1,A2
et A3), publiée sur un serveur de fichiers. L'une d'entre elles (A1) est
un
menu qui permet de lancer les autres :

Dim proc As Process = New Process()
proc.StartInfo = New ProcessStartInfo(CheminExecutable)
proc.Start()

Quand A1 lance A2, aucun problème. Mais quand A1 lance A3, j'ai le temps
de
voir le chargement de A3, qui aussitôt se termine.

Si je lance A3 seule, à partir du même CheminExecutable, pas de
problème. Si
je republie A3 après avoir décoché la case «Application à instance
unique»,
A1 peut la lancer !

Tout se passe donc comme si A3 reconnaissait en A1 un double d'elle-même,
alors que ce n'est pas le cas pour A2.

À la main, je peux aussi lancer A3 après avoir lancé A2. Par contre, je
ne
peux pas lancer A1 si A3 est déjà chargé (au moins il y a une certaine
cohérence dans cette symétrie !).

Quelqu'un a-t-il une idée d'explication ? de solution ? Cela pourrait-il
avoir un lien avec la création d'une application Windows à partir d'un
modèle ?

Merci d'avance,
Gilbert Tordeur






Bonjour,

Vous avez sans doute fait un copier/coller du .vbproj de A1 et A3...
Il doivent donc avoir le même GUID, pensez donc à changer le GUID d'un des
2 projets (Propriétés du Projet -> Application -> Assembly Information)

Pour générer un GUID, utilisez le p'tit logiciel présent dans le menu
Tools : "Create GUID"

--
Gilles TOURREAU - MVP C#


S.A.R.L. P.O.S
Le spécialiste en motoculture depuis + de 30 ans !
http://www.pos.fr
Publicité
Poster une réponse
Anonyme