Developpez.com

Une très vaste base de connaissances en informatique avec
plus de 100 FAQ et 10 000 réponses à vos questions

Application à instance unique en C#

Présentation
Les utilisateurs de VB.NET peuvent faire des applications Windows Forms avec une seule instance de l'application à la fois. Pour cela, dans leur propriété de projet sous l'onglet "Application", il leur suffit juste de cocher la case "Application à instance unique" dans le groupe "Propriétés de l'infrastructure d'application Windows" et le tour est joué.
Après, vous allez me dire qu'on peut toujours faire cela à l'aide d'un Mutex... mais avec une telle solution, on ne peut pas gérer la couche supplémentaire qui permet, dans le cas où l'on clique à nouveau sur l'exécutable, d'exécuter un code dans l'application déjà lancée comme par exemple restaurer la fenêtre principale de l'application déjà lancée à l'écran. Les utilisateurs de VB.NET peuvent faire cela aussi avec Windows Forms (mais uniquement Windows Forms d'ailleurs).
Pour cela, ils cliquent sur le bouton "Afficher les événements de l'application" et dans la classe générée, ils s'abonnent à l'événement "StartupNextInstance".

Les utilisateurs de C# n'ont pas ce privilège... A priori!

Je vais vous montrer le code qui vous permettra d'avoir accès aux mêmes privilèges en C#!

Ci-joint, une solution qui contient un exemple écrit en C# pour Windows Forms et même un exemple pour WPF!

Tout d'abord, il vous faut inclure la référence d'assembly "Microsoft.VisualBasic".

Ensuite, il faut, dans la propriété du projet, changer l'objet de démarrage.

Il y a une classe à dériver dans tous les cas : c'est "Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase". Dedans, j'y ai mis ma fonction Main.

Pour le reste des détails, je vous laisse regarder le code source.

Bonne lecture à vous!
Détails
Avatar de Ph_Gr
Membre expérimenté
Voir tous les téléchargements de l'auteur
Licence : Libre
Date de mise en ligne : 28 mars 2014




Developpez.com décline toute responsabilité quant à l'utilisation des différents éléments téléchargés.
Responsable bénévole de la rubrique Microsoft DotNET : Hinault Romaric -