Comment assurez-vous qu'il existe une instance de l'application est en cours d'exécution
Je veux vérifier lorsque l'utilisateur double-cliquez sur applictaion icône qu'aucune autre instance de cette application est déjà en cours d'exécution.
J'ai lu sur Mon.L'Application, mais je ne sais toujours pas quoi faire.
Vous devriez probablement spécifier une langue, le cadre et/ou du système d'exploitation.
J'ai marqués ce que VB.Net comme Mon.L'Application est un VB.Net fonctionnalité
Ajouté le singleton balise comme il semble que ce qui est nécessaire.
Singleton gère seule instance de classe dans une instance de l'application. Vous avez besoin de quelque chose CLR / à l'échelle du système, à l'instar de mutex
J'ai marqués ce que VB.Net comme Mon.L'Application est un VB.Net fonctionnalité
Ajouté le singleton balise comme il semble que ce qui est nécessaire.
Singleton gère seule instance de classe dans une instance de l'application. Vous avez besoin de quelque chose CLR / à l'échelle du système, à l'instar de mutex
OriginalL'auteur BDeveloper | 2008-12-24
Vous devez vous connecter pour publier un commentaire.
Le motif le plus fréquent pour ce faire est d'utiliser le pattern Singleton. Comme vous ne l'avez pas indiqué une langue, je vais supposer que vous faites référence à C# - si non, les principes sont toujours les mêmes dans la plupart des langages à objets.
Cette article devrait vous donner un peu d'aide.
La technique décrite dans Pete lien fonctionne aussi parfaitement bien dans VB.NET. J'ai dû rendre mon application un singleton sur ma to-do list depuis des lustres, donc c'est très utile, donc +1.
Singleton est un de la classe modèle. Instance unique est un app modèle.
lien vers l'article est ded, en faisant cette réponse n'est pas utile
OriginalL'auteur Pete OHanlon
C'est quelque chose que j'ai utilisé... (C# sur .NET 2.0)
OriginalL'auteur Jon Dewees
En VB .NET il y a un IsSingleInstance propriété booléenne qui fait le travail pour vous.
En VB (prises de ici):
Voici comment vous devez l'utiliser en C# (prises de ici):
Assurez-vous de référence de la Microsoft.VisualBasic.dll dans votre projet.
(Commentaire ci-dessus se rapporte à c#)
Il utilise toujours le même message sous-jacent de la boucle de trucs, c'est juste un wrapper autour de l'invocation, car il peut lancer le formulaire principal ou il peut tout simplement s'arrêter après la signalisation de l'application existante pour traiter les arguments de la nouvelle. Certains le code d'installation peut être déplacé autour de la événements dans l'emballage, mais doit encore fondamentalement de la même manière, si vous pouvez trouver le bon endroit pour le mettre.
Il ne fonctionne pas sur un compte Invité Windows. Il jette un
UnauthorizedAccessException
OriginalL'auteur Yuval Peled
Ouvrir votre Projet de Propriétés (Onglet Application) et de vérifier la Faire seule instance de l'application option.
À partir de l'onglet Application, vous pouvez également cliquer sur le Afficher les Événements d'Application bouton pour créer un ApplicationEvents.vb classe où vous pouvez gérer la deuxième instance de l'événement:
OriginalL'auteur Gordon Bell
Scott, Hanselman a bel article à ce sujet. Le code est en C#, mais je suppose que ça va être facile de le porter à VB.
http://www.hanselman.com/blog/TheWeeklySourceCode31SingleInstanceWinFormsAndMicrosoftVisualBasicdll.aspx
Voici un article de plus sur le sujet dans les cas qui ne répondent pas à vos besoins:
http://www.codeproject.com/KB/cs/cssingprocess.aspx
OriginalL'auteur lacop
Dans VB.NET une seule instance de l'application est juste une case à cocher sur la page de propriétés du Projet. Vous pouvez aussi le piège de la Mon.Application.StartupNextInstance événement pour avoir votre instance simple faire quelque chose quand une autre copie est lancée. Ceci peut être utilisé, par exemple, pour le MDI comme le comportement de l'ouverture du document demandé dans l'instance d'origine.
Derrière les coulisses, cela résume une bonne partie de mutex et de l'IPC goo - voir WindowsFormApplicationBase - et peut être utilisée en C#.
OriginalL'auteur Mark Brackett
À travers les conseils ci-dessus, j'ai trouvé comment faire pour que mon application un seul exemple, mais j'ai toujours eu à aller sur un autre site pour savoir EXACTEMENT comment. Ici est une simple image comment j'ai réussi à le faire. C'était facile comme bonjour et j'espère que cela aide d'autres avec le même besoin, parce que je suis sûr que l'OP a résolu ce problème il y a 7 ans:
OriginalL'auteur cardmagik
Utilisation
Mutex
. Effectivement, unMutex
peuvent être nommés avec une chaîne, et qui est unique dans le CLR.Exemple de code:
De cette post:
OriginalL'auteur biozinc
Si votre application est en cours VB.NET 2.0-3.5, le moyen le plus facile de garder une seule instance d'un programme en cours d'exécution est en utilisant l'Application Windows Cadre Propriétés". Pour y arriver, cliquez-droit sur le nom de votre projet et allez dans "Propriétés". Une fois là-bas, sélectionnez le seul exemple d'inscription case.
Vous pouvez également utiliser le ApplicationEvents.vb pour montrer à l'utilisateur qu'ils doivent exécuter votre programme une deuxième fois. Vous pouvez créer/afficher facilement dans la même fenêtre propriétés, sélectionnez "Afficher les Événements d'Application". À l'intérieur de là, vous pouvez sélectionner le MyApplication_StartupNextInstance sous et entrez dans le code, comme ceci:
Laissez-moi savoir si cela aide! JFV
OriginalL'auteur JFV
Affecter votre application de certaines identifiant unique, comme une codé en dur guid et de créer un Mutex cas où vous attribuer le mutex il identifiant. Si elle lève une exception alors si signifie que votre application est déjà en cours d'exécution (comme il a réussi à créer le mutex)
OriginalL'auteur Sean
J'ai pensé qu'il serait plus facile d'avoir l'exemple ici, au lieu d'un lien.
La partie la plus difficile est d'avoir l'application existante faire quelque chose d'utile lors de l'exécution de la commande, tels que la pop à l'avant (et de-minmimize si nécessaire), ou ouvrir un document spécifié dans l'application existante. Si ces comportements ne sont pas nécessaires, alors qu'un simple déjà en cours d'exécution vérifier, comme cela pourrait fonctionner pour vous.
OriginalL'auteur Cédric Guillemette