web-dev-qa-db-fra.com

Quel est le point d'entrée d'une application WPF?

La méthode Main est le point d'entrée d'une application console C #. Ainsi, par exemple, si je dois démarrer certains threads ou services, je le ferai dans la méthode Main.

Je ne vois pas la méthode Main dans un projet WPF, alors quel est le point d'entrée d'une application WPF? Si je dois démarrer certains threads ou services, où dois-je écrire le code pour les démarrer?

MISE À JOUR: cette réponse résume les solutions disponibles, mais quels sont les avantages et les inconvénients de chaque solution?

37
enzom83

Votre point d'entrée principal est un remplacement d'OnStartup dans le code-behind d'App.Xaml:

public partial class App : Application
{
    protected override void OnStartup(StartupEventArgs e)
    {
        base.OnStartup(e);
        // here you take control
    }
}

D'autres points d'intérêt peuvent être Application.OnActivate () et les événements Loaded et Initialized de votre MainWindow.

Si je dois démarrer certains threads ou services, où dois-je écrire le code pour les démarrer?

Dépend de ce dont ces threads/services ont besoin et veulent.

32
Henk Holterman

Pour une application autonome WPF générée dans Visual Studio à l'aide de l'Assistant Nouveau projet, le point d'entrée de l'application est la fonction principale, définie dans App.g.cs (code généré). Dans le projet par défaut, il s'agit de la méthode App.Main void statique publique.

Check this

En général, une application .NET utilisera comme point d'entrée (première fonction appelée) toute méthode nommée Main ayant des modificateurs d'accès public/statique, quelle que soit la classe dans laquelle se trouve Main.

Si votre application possède plusieurs classes avec une méthode Main statique publique, vous devrez spécifier le point d'entrée dans la boîte de dialogue des propriétés du projet. Dans la liste déroulante Objet de démarrage, sélectionnez la classe qui contient la méthode Main à appeler au démarrage.

42
Rajendra Tripathy

Le principal pour une application WPF est généré automatiquement et se trouve dans l'un des fichiers .cs qui sauvegarde votre fichier App.xaml. Vous pouvez développer App.xaml -> App.xaml.cs -> App -> Main () dans l'Explorateur de solutions, ce qui vous amènera au fichier source App.g.i.cs, qui contient votre fonction Main ().

Ce fichier est généré automatiquement, donc plutôt que de modifier le Main là-bas, je vous recommande de créer un nouveau fichier .cs dans votre projet qui contient la fonction Main (). Vous devez ensuite modifier les propriétés de votre projet pour spécifier l'objet de démarrage correct. Cela se fait sur l'onglet Application dans les propriétés de votre projet. Définissez-le sur la classe qui contient votre fonction Main personnalisée.

Vous voudrez probablement copier le contenu du Main généré automatiquement dans votre nouveau, car vous voulez que votre application se comporte normalement (afficher la fenêtre principale, etc.).

10
lordjeb

Le point d'entrée est généralement App.xaml.cs.

Vous voulez éviter d'y mettre du code idéalement. Essayez plutôt de les instancier dans les modèles de vue pour MVVM. C'est généralement un endroit difficile à trouver - comme votre question en témoigne.

Une autre alternative, chargez-les dans une classe d'assistance, puis instanciez-la dans le fichier app.xaml.

2
kidshaw