WPF应用程序的切入点是什么?

enz*_*m83 37 .net c# wpf c#-4.0

Main方法是C#控制台应用程序的入口点.因此,例如,如果我必须启动一些线程或服务,我将在该Main方法中执行.

我没有Main在WPF项目中看到该方法,那么WPF应用程序的入口点是什么?如果我必须启动一些线程或服务,应该在哪里编写启动它们的代码?

更新: 这个答案总结了可用的解决方案,但每个解决方案的优缺点是什么?

Raj*_*thy 44

对于使用"新建项目"向导在Visual Studio中生成的WPF独立应用程序,应用程序的入口点是在App.g.cs(生成的代码)中定义的Main函数.在默认项目中,这是public static void App.Main方法.

检查一下

通常,.NET应用程序将使用名为Main的任何方法作为其入口点(称为第一个函数),该方法具有公共/静态访问修饰符 - 无论Main位于哪个类中.

如果您的应用程序具有多个具有公共静态Main方法的类,则需要在项目属性对话框中指定入口点.在"启动对象"下拉列表中,选择包含应在启动时调用的Main方法的类.

  • 但是OP可以更新App.g.cs中的代码并用于他的目的吗?从正常的 App.xaml.cs 中,我验证了“Main”方法不能被覆盖/重用。那么,有什么意义呢? (2认同)

Hen*_*man 32

您的主要入口点是App.Xaml代码隐藏中的OnStartup重写:

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

其他兴趣点可能是Application.OnActivate()以及MainWindow的Loaded和Initialized事件.

如果我必须启动一些线程或服务,应该在哪里编写启动它们的代码?

取决于那些线程/服务需要和想要的东西.


lor*_*jeb 10

WPF应用程序的Main是自动生成的,可以在支持App.xaml文件的.cs文件中找到.您可以在解决方案资源管理器中展开App.xaml - > App.xaml.cs - > App - > Main(),它将转到App.gics源文件,其中包含您的Main()函数.

此文件是自动生成的,因此我建议您在项目中创建一个包含Main()函数的新.cs文件,而不是在那里编辑Main.然后,您必须更改项目的属性以指定正确的启动对象.这是在项目属性的"应用程序"选项卡上完成的.将其设置为包含自定义Main函数的类.

您可能希望将自动生成的Main的包含复制到新的包中,因为您希望应用程序正常运行(显示主窗口等).