WPF點滴(1) Main 函數

應用程序的入口函數是main函數,在Console程序和Winform程序main函數都有清晰的定義,能夠很容易找到,可是WPF的工程文件中卻找不到main函數的定義,是WPF不須要main函數嗎?NO! NO! NO! 不要太天真了,WPF是有main函數的,VS幫咱們自動生成了,在obj\Debug\App.g.cs文件中能夠看到如下的定義(obj\Debug文件夾下還有一個叫App.g.i.cs的文件,文件內容與App.g.cs一致,這個文件也是自動生成的,是爲了VS的intelligence 智能感知服務的,關於intelligence 之後再講)。app

能夠看到Main函數在App類中定義,App類由VS自動生成,該類繼承自System.Windows.Application,Application類維護了應用程序的生命週期,每一個運行中的WPF程序都由Application的一個實例表示。以上代碼中關鍵的兩句是:函數

this.StartupUri = new System.Uri("MainWindow.xaml", System.UriKind.Relative);this

app.Run();orm

這兩句的做用是啓動應用程序,並將"MainWindow.xaml"定義的窗口做爲該應用程序的主窗口。自動生成的代碼比較簡單,Application類能夠作的事情遠不止這些,之後能夠詳細講一下。blog

 

以上是自動生成的Main函數,也能夠手動建立咱們本身的Main函數,以下:繼承

public class StartUp
{
  [STAThread]
  public static void Main(string[] args)
  {
    var app = new App
    {
      StartupUri = new System.Uri("MainWindow.xaml", System.UriKind.Relative)
    };
    app.Run();
  }
}生命週期

可是你會獲得以下的編譯錯誤:ci

error CS0017: Program has more than one entry point defined. Compile with /main to specify the type that contains the entry point.string

緣由也很簡單,VS幫你生成了一個Main函數,你又本身定義了一個Main函數,可是應用程序只能有一個入口,系統不知道要用哪個了,因此須要手動指定一個。在工程的屬性的Application頁中,設置Startup object爲咱們剛剛定義的類StartUp就能夠了。it

相關文章
相關標籤/搜索