我玩了一些C#Winforms/WPF代碼,只是偶然發現了一些奇怪的東西。 比方說,我有這樣的代碼:停止執行C#代碼
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
DoSomething();
// maybe something more if everything went ok
}
}
令我百思不解的是,我不能簡單地從方法DoSomething的關閉應用程序的構造函數完成其工作之前。如果在DoSomething
的執行過程中出現任何問題,我需要立即關閉應用程序,但它只是繼續運行,執行// maybe something more...
部分,然後關閉,但對我來說太遲了。
我必須把關閉窗體的代碼放在構造函數本身的內部,然後使用return;
然後才能工作,但我並沒有真正找到可以接受的解決方案。我試圖將這種驗證邏輯從構造函數移動到我的方法中。
我試過的東西
public void DoSomething()
{
Close();
}
或
public void DoSomething()
{
Application.Current.Shutdown();
}
但它似乎並沒有工作。是的,兩個代碼都會關閉應用程序,但只能在完成完成的構造函數代碼之後。
Why
我需要這樣的東西嗎?那麼,因爲在啓動時我需要檢查各種事情,比如連接和硬件的可用性,驗證用戶等,如果有任何失敗,就沒有必要執行更多的代碼。
與Winforms和WPF(因此標籤)嘗試相同的原則,工作原理相同。
任何人都可以提供解釋或解決方案嗎?我知道這可能對你們中的一些人非常基本,但是請和我一起裸露,我主要不是Windows程序員,所以這對我來說有點新意。網站的工作有點不同...... :)
當創建第一種形式沒有應用程序正在運行,所以關機()可能是忽略不計。 Avip提供了很好的解決方案 –