2012-01-08 123 views
8

我在公共的MainWindow(){}裏面放了一些代碼,但我一做到這些,就不斷收到一些晦澀的XAML解析錯誤(不是在我的電腦上,而是在其他3個我已經嘗試過的 - yep上!)如何在C#應用程序啓動時正確運行代碼?

在應用程序啓動時,是否有首選代碼運行的方式?

理論是我想讓它打電話回家,問它可以開始。如果不是,我希望應用程序關閉。稱它爲臨時版權保護:)

+1

你在說什麼技術?窗體形式? asp.net網頁表單? asp.net mvc? WPF? – balexandre 2012-01-08 11:23:08

+0

@balexandre,很好的問題。我的猜測/假設是WPF,因爲使用了標籤和提到的XAML錯誤並在不同的計算機上運行它。 – Lucero 2012-01-08 11:25:39

+1

@Lucero,我添加了'wpf'標籤,因爲討論了XAML錯誤和'MainWindow'。 – svick 2012-01-08 11:28:06

回答

19

在正常情況下,WPF會爲您創建Main方法(應用程序入口點)。您的選項

  • Application.Startup事件創建處理程序,並將代碼放在那裏。或者,您可以覆蓋OnStartup()方法。
  • 如果這對你來說太晚了,請將代碼放在App的無參數構造函數中(它可能不存在,但可以創建它)。
  • 如果即使這太晚,您也可以創建自己的Main()方法。 There are several ways how to do that。最簡單的方法是把它放在另一個類中,並告訴Visual Studio你想在項目的屬性中使用這個方法。

另一方面,你說你得到一些模糊的XAML解析錯誤。也許你應該弄清楚他們到底是什麼意思?

0

您有Window.Loaded事件WPF

但是,如果,如果你想檢查應用程序加載之前運行許可(由於有些資源消費或者一些經營策略)使用bootstrapper一個獨立的小executable首先由mainexe和推出後,如果一切ok了bootstrapper運行main exe

+0

即使在Window的構造函數之後,Window.Loaded也會被調用,OP所說的構造函數太晚了。 – svick 2012-01-08 11:28:58

+0

@svick:看不到「太遲」的觀點。 OP表示,他希望在*應用程序啓動後立即運行檢查*。因此,imo是一個「正常」選項,可以捕捉'Window.Loaded'或者使用'bootstrapper',這個實現起來比較複雜,但實際上可能是OP想要的。 – Tigran 2012-01-08 11:34:33

相關問題