2009-06-04 2 views
3

J'ai un problème assez simple.WPF On Start détecter si le processus est démarré et amener l'application à l'avant

Lorsque le programme a été démarré et que l'utilisateur essaie de démarrer une autre instance. Cette nouvelle instance doit amener l'ancienne instance à l'avant et quitter. La solution semble assez simple, je pourrais prendre le code de http://www.codeproject.com/KB/cs/oneprocessonly.aspx et être fait avec elle.

Heureusement/Malheureusement, j'utilise WPF. Cela signifie, il n'y a aucun moyen pour moi de contrôler le contenu de la méthode Main().

J'ai trouvé une solution à ce problème "Comment puis-je fournir ma propre méthode Main() dans mon application WPF?" @http://learnwpf.com/Posts/Post.aspx?postId=a5643949-ab80-47f9-93c8-f5e8e5782d34. Mais cette solution apporte d'autres problèmes comme les statistiques Expression Blend à paniquer quand il n'y a pas de fichier App.xaml.

Je pourrais utiliser l'événement OnStarted des classes d'application, mais j'utilise la ressource d'écran de démarrage de WPF, cela signifierait que l'écran d'accueil supplémentaire s'affichera.

Ma dernière préoccupation avec cette méthode est qu'elle coud pas « l'épreuve du futur » me :(.

est-il une solution de type WPF à ce problème?

Nous vous remercions à l'avance.

Répondre

6

Je crois que ce lien peut vous aider: C# Single Instance Application

vous détectez généralement en cours d'exécution des instances en définissant un mutex dans votre application, puis la vérification de ce mutex lors du démarrage de l'application d'envoi de l'autre application à f. ront est une question d'envoyer le PostMessage correct.

En ce qui concerne votre propre Main(), je suis d'accord pour dire que Expression Blend a tendance à être un peu bizarre quand votre App.xaml n'existe pas. Dans ma propre application, j'utilise Expression Blend pour éditer manuellement des fenêtres complexes, mais je ne fais aucune compilation ni aucun test dans l'application (la main est définie dans un App.cs).

Si vous faites des tests d'interface utilisateur étendus en utilisant Expression Blend, je ne peux pas dire que vous allez nécessairement aller loin en utilisant cette méthode. J'ai tendance à faire la plupart de mes montages et de mes tests dans Visual Studio et à modifier directement le XAML, donc ce n'est pas vraiment un problème pour moi. Je considérerais ceci comme une limitation (ou un bug?) D'Expression Blend personnellement.

Questions connexes