簡體   English   中英

WPF 應用程序的入口點是什么?

[英]What is the entry point of a WPF application?

Main方法是 C# 控制台應用程序的入口點。 因此,例如,如果我必須啟動一些線程或服務,我將在Main方法中進行。

我沒有在 WPF 項目中看到Main方法,那么 WPF 應用程序的入口點是什么? 如果我必須啟動一些線程或服務,應該在哪里編寫啟動它們的代碼?

更新:這個答案總結了可用的解決方案,但每個解決方案的優缺點是什么?

對於使用“新建項目”向導在 Visual Studio 中生成的 WPF 獨立應用程序,應用程序的入口點是 App.g.cs(生成的代碼)中定義的 Main 函數。 在默認項目中,這是 public static void App.Main 方法。

檢查這個

通常,.NET 應用程序將使用任何名為 Main 的具有公共/靜態訪問修飾符的方法作為其入口點(調用的第一個函數)——無論 Main 位於哪個類中。

如果您的應用程序有多個具有公共靜態 Main 方法的類,則您需要在項目屬性對話框中指定入口點。 在 Startup object 下拉列表中,選擇包含應在啟動時調用的 Main 方法的類。

您的主要入口點是 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 事件。

如果我必須啟動一些線程或服務,應該在哪里編寫啟動它們的代碼?

取決於那些線程/服務需要和想要的。

WPF 應用程序的 Main 是自動生成的,可以在支持 App.xaml 文件的 .cs 文件之一中找到。 您可以在解決方案資源管理器中展開 App.xaml -> App.xaml.cs -> App -> Main(),這將使您進入 App.gics 源文件,其中包含您的 Main() 函數。

此文件是自動生成的,因此我建議不要在那里編輯 Main,而是建議在您的項目中創建一個包含 Main() 函數的新 .cs 文件。 然后您必須更改項目的屬性以指定正確的啟動對象。 這是在項目屬性中的應用程序選項卡上完成的。 將其設置為包含自定義 Main 函數的類。

您可能希望將自動生成的 Main 的內容復制到新的內容中,因為您希望應用程序正常運行(顯示主窗口等)。

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

您希望避免在理想情況下將代碼放在那里。 而是嘗試在 MVVM 的視圖模型中實例化它們。 這通常是一個很難找到東西的地方 - 正如你的問題所證明的那樣。

另一種選擇是,將它們加載到幫助程序類中,然后在 app.xaml 文件中對其進行實例化。

您可以在 App.xaml.cs 文件中聲明一個構造函數。

public partial class App : Application
{
    public App()
    {
        //initialize your app
    }
}

Main function 在 App.gics 中聲明,構建您的 App 是發生的第一件事:

public static void Main() {
    MyWPF.App app = new MyWPF.App(); //calls your constructor
    app.InitializeComponent();
    app.Run();
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM