关于Form.Close()的再一次

时间:2011-03-11 09:18:35

标签: c# winforms

嗯,很明显,如果你不希望执行其余的方法代码,你需要在Form.Close之后使用return。我的意思是像这样的嘘声:

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

     SomeOtherMethod;
}

但是如果从其他地方或标准控制事件处理程序调用此SomeMethod会怎样?像Handler一样 - >方法1 - >的someMethod。如果从SomeMethod调用Close()然后执行return,那么Method1和Handler代码会一直执行到最后还是最后会关闭?

有没有办法立即使用Close,well,close形式?我的意思是,就在这个地方之前,所有序列都没有完成执行?

4 个答案:

答案 0 :(得分:1)

仅仅因为您的表单已关闭并不意味着该进程已停止,因此代码将被执行。

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

答案 1 :(得分:1)

如果这是您的应用程序的主要形式,您可以立即致电Application.Exit()。虽然,但并非适用于所有情况。您应该使用bool作为嵌套方法的返回类型,并相应地决定流程。

答案 2 :(得分:0)

由于UI在单个线程中运行,因此所有操作都按顺序执行。

答案 3 :(得分:0)

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

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

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