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

时间:2014-08-18 20:45:37

标签: c# .net wpf c#-4.0

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

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

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

4 个答案:

答案 0 :(得分:41)

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

Check this

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

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

答案 1 :(得分:26)

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

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

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

  

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

取决于这些线程/服务需要和想要的内容。

答案 2 :(得分:10)

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

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

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

答案 3 :(得分:2)

入口点通常是App.xaml.cs。

您希望避免在理想情况下放置代码。而是尝试在MVVM的视图模型中实例化它们。它通常是一个难以找到的东西 - 正如你的问题是证明的那样。

另一种方法是,在辅助类中加载它们,然后在app.xaml文件中实例化它。