2011-03-11 36 views
1

那麼,很明顯,如果您不希望執行其餘的方法代碼,則需要在Form.Close後使用return。我的意思是像這樣的sutiation:關於Form.Close()的更多時間

private void SomeMethod() 
{ 
    if (someCondition) 
    { 
      Close(); 
      return; 
    } 

    SomeOtherMethod; 
} 

但是如果這個SomeMethod從其他地方或標準控制事件處理程序調用呢?像Handler - > Method1 - > SomeMethod。如果從SomeMethod調用Close()然後執行返回,那麼Method1和Handler代碼是否會一直執行到最後,或者最終會關閉表單?

有沒有什麼辦法可以立即使用Close來關閉窗體?我的意思是,只是從這個地方,而不是所有的序列將完成執行之前?

回答

1

只是因爲你的表單是關閉的並不意味着這個進程被停止了,所以當然代碼將被執行。

如果你不想關閉的SomeMethod內部形狀後執行任何其他代碼,只需重寫代碼,使SomeMethod將返回false時,有沒有必要執行任何東西。

0

由於UI在單線程中運行,所有操作都按順序執行。

1

如果這是您的應用程序的主要形式,您可以直接致電Application.Exit()。雖然這並不適用於所有情況。您應該使用bool作爲嵌套方法的返回類型,並相應地決定流程。

0

當調用Form.Close()方法時,表單立即關閉,但方法繼續運行。嘗試在按鈕事件處理程序中運行以下代碼,同時查看輸出窗口以在動作中查看它:

private void button1_Click(object sender, EventArgs e) 
{ 
    Debug.WriteLine("Closing..."); 
    Close(); 

    Thread.Sleep(5000); 
    Debug.WriteLine("End of method."); 
}