Main
方法是C#控制台应用程序的入口点。例如,如果我需要启动一些线程或服务,我将在Main
方法中执行此操作。
我在WPF项目中没有看到Main
方法,那么WPF应用程序的入口点是什么?如果我要启动一些线程或服务,在哪里编写启动它们的代码?
更新: 此答案概述了可用的解决方案,但每个解决方案的优缺点是什么?Main
方法是C#控制台应用程序的入口点。例如,如果我需要启动一些线程或服务,我将在Main
方法中执行此操作。
我在WPF项目中没有看到Main
方法,那么WPF应用程序的入口点是什么?如果我要启动一些线程或服务,在哪里编写启动它们的代码?
更新: 此答案概述了可用的解决方案,但每个解决方案的优缺点是什么?在使用Visual Studio的新项目向导生成的WPF独立应用程序中,应用程序的入口点是在App.g.cs(生成的代码)中定义的Main函数。在默认项目中,这是公共静态void App.Main方法。
通常情况下,.NET应用程序将使用任何具有public/static访问修饰符并且位于哪个类的Main方法作为其入口点(首次调用的函数)。
如果您的应用程序有多个带有public static Main方法的类,则需要在项目属性对话框中指定入口点。在“启动对象”下拉菜单中,选择包含应在启动时调用的Main方法的类。
Main
--它的内容展示了如何启动WPF应用程序。虽然您无法自定义生成的入口点,但可以构建自己的入口点来执行相同的操作(可能在配置应用程序后)。 - cHaoapp.xaml.cs
代码后台文件具有多个潜在的入口点时,这非常有用。 - J Weezypublic partial class App : Application
{
protected override void OnStartup(StartupEventArgs e)
{
base.OnStartup(e);
// here you take control
}
}
其他值得注意的地方可能是Application.OnActivate()和你的MainWindow的Loaded和Initialized事件。
如果我需要启动一些线程或服务,应该在哪里编写启动它们的代码?
这取决于那些线程/服务需要和想要什么。
base.OnStartup(e)
? - Altiano GerungWPF应用程序的主要功能是自动生成的,可以在支持您的App.xaml文件的.cs文件之一中找到。您可以在解决方案资源管理器中展开App.xaml->App.xaml.cs->App->Main(),这会带您到App.g.i.cs源文件,其中包含您的Main()函数。
由于该文件是自动生成的,所以不建议在那里编辑Main,而是建议在项目中创建一个新的.cs文件以包含Main()函数。然后,您必须更改项目的属性以指定正确的启动对象。这是在项目属性中的“应用程序”选项卡上完成的。将其设置为包含自定义Main函数的类。
您可能想将自动生成的Main内容复制到新文件中,以便使应用程序正常运行(显示主窗口等)。
入口点通常是App.xaml.cs。
最好避免在此处放置代码。相反,尝试在MVVM的视图模型中实例化它们。这通常是一个棘手的地方-正如你的问题所证明的那样。
另一种选择是在辅助类中加载它们,然后在app.xaml文件中实例化该类。
你可以在App.xaml.cs文件中声明一个构造函数。
public partial class App : Application
{
public App()
{
//initialize your app
}
}
主函数在 App.g.i.cs 中声明,构建您的应用程序是发生的第一件事:
public static void Main() {
MyWPF.App app = new MyWPF.App(); //calls your constructor
app.InitializeComponent();
app.Run();
}