我可以在Form.Close()之后放置命令吗?

时间:2009-06-28 21:38:23

标签: c# winforms

在C#中, 假设我是一个表格,我按下了一个按钮来关闭它。

this.Close();
some_action(); //can I do this??

我可以在关闭表单后执行另一个操作,还是线程死掉,之后的所有内容都丢失了?

3 个答案:

答案 0 :(得分:3)

取决于您要执行的操作以及声明的上下文。如果正在关闭的表单是拥有邮件循环的主要表单,则您无法执行任何与UI相关的内容(例如,您无法显示另一个MessageBox)。如果你不是从另一个窗口(它不拥有消息循环)那样做,你可以做任何事情(甚至是UI相关的),只要你不操纵封闭的表格对象(你将获得{{1}就像任何处置对象一样)。

顺便说一句,线程不会因ObjectDisposedException而死亡。关闭主窗口会导致消息循环终止,而不是线程本身。例如,以下程序

Close
关闭static void Main() { Application.Run(new Form1()); Application.Run(new Form2()); } 后,

将显示Form2(使用新创建的消息循环)。这证明线程没有死。

答案 1 :(得分:2)

如果您在调用Close后尝试操作表单或其中的任何控件,则会遇到麻烦。但是,在调用Close之后,没有什么可以阻止你调用其他方法 - 例如记录方法。

答案 2 :(得分:1)

处理FormClosing Event并在事件处理程序中执行其他操作。