What is the entry point of a WPF application?

The Main method is the entry point of a C# console application. Thus, for example, if I have to start some threads or services, I will do it within the Main method.

I do not see the Main method inside a WPF project, so what is the entry point of a WPF application? If I have to start some threads or services, where should write the code for starting them?

UPDATE: this answer summarizes the available solutions, but what are the pros and cons of each solution?


For a WPF standalone application that is generated in Visual Studio using the New Project wizard, the entry point for the application is the Main function, defined in App.g.cs (generated code). In the default project, this is the public static void App.Main method.

Check this

In general, a .NET application will use as its entry point (first function called) any method named Main that has public/static access modifiers–no matter what class Main is located in.

If your application has more than one class with a public static Main method, you’ll need to specify the entry point in the project properties dialog. In the Startup object dropdown, select the class that contains the Main method that should be called on startup.


Your main entry point is an override of OnStartup in the code-behind of App.Xaml :

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

Other points of interest might be Application.OnActivate() and the Loaded and Initialized events of your MainWindow.

If I have to start some threads or services, where should write the code for starting them?

Depends on what those threads/services need and want.