在C#中,假设我在一个窗体中,我按下了一个我创建的按钮来关闭它。
this.Close();
some_action(); //can I do this??
我关闭表单后,是否可以执行其他操作,还是线程会终止并且此后的所有操作都将丢失?
取决于您想做什么以及语句的上下文。如果要关闭的表单是拥有消息循环的主表单,您就无法执行任何与UI相关的操作(例如,无法显示另一个MessageBox)。如果您不是从另一个窗口(该窗口不拥有消息循环)进行操作,则可以执行任何操作(即使与UI相关),只要您不操纵已关闭的表单对象(您将像任何已处理对象一样收到ObjectDisposedException异常)。
顺便说一句,线程并不会因为Close而死亡。关闭主窗口会导致消息循环终止而不是线程本身。例如,以下程序
static void Main() {
Application.Run(new Form1());
Application.Run(new Form2());
}
当 Form1
关闭后(使用新创建的消息循环),会显示 Form2
。这证明线程并未停止。