C# 关于Form.Close()的更多信息

C# 关于Form.Close()的更多信息,c#,winforms,C#,Winforms,很明显,您需要在表单之后使用return.Close,如果您不想执行其余的方法代码。我是说像这样的缝合: private void SomeMethod() { if (someCondition) { Close(); return; } SomeOtherMethod; } 但是,如果这个SomeMethod是从其他地方或standart控件事件处理程序调用的呢?比如Handler->Method1->som

很明显,您需要在表单之后使用return.Close,如果您不想执行其余的方法代码。我是说像这样的缝合:

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

     SomeOtherMethod;
}
但是,如果这个SomeMethod是从其他地方或standart控件事件处理程序调用的呢?比如Handler->Method1->somethod。如果从SomeMethod调用Close(),然后执行return,那么Method1和处理程序代码会一直执行到底,还是表单最终会关闭


有没有办法立即使用Close-to,嗯,Close-form?我的意思是,就从这里开始,而不是在所有序列完成执行之前?

因为UI在单个线程中运行,所以所有操作都是按顺序执行的。

仅仅因为表单已关闭并不意味着进程已停止,所以当然,代码将被执行


如果在关闭
SomeMethod
中的表单后不想执行任何其他代码,只需重写代码,这样
SomeMethod
在不需要执行任何其他操作时将返回
false

如果这是应用程序的主要表单,您可以直接调用
application.Exit()
。但是,这并不适用于所有情况。您应该使用
bool
作为嵌套方法的返回类型,并相应地决定流程。

调用
Form.Close()方法时,表单立即关闭,但方法继续运行。尝试在按钮事件处理程序中运行以下代码,同时查看输出窗口以查看其操作:

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

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