这是一个我想要比问题更正确的概念,所以在我尝试处理这个问题时请原谅模糊:
我正在开发一个仅限Windows托盘的应用程序,我提供退出应用程序的菜单选项。由于我没有关闭应用程序的关闭按钮,当从托盘菜单退出时,我处理该事件并显式调用Form.Close()。看起来我覆盖的Form.onFormClosing()是在我调用Form.Close()的同一个线程上调用的,而Form.onFormClosing()似乎是来自Form.Close()的同步调用。我这么认为是正确的吗?如果是的话,这个映射到应用程序点击关闭按钮的时间是什么?
答案 0 :(得分:2)
这是对的。关闭时,表单的生命周期就像这样:
http://msdn.microsoft.com/en-us/library/86faxx0d%28VS.80%29.aspx
一旦要关闭表单,就会一个接一个地调用这些操作。这就是为什么他们也都在同一个线程上。无论如何,GUI动作应该在主线程(gui线程)上运行。