Form.onFormClosing事件处理程序在与Form.Close相同的线程中调用

时间:2013-07-26 05:57:20

标签: c# .net event-handling

这是一个我想要比问题更正确的概念,所以在我尝试处理这个问题时请原谅模糊:

我正在开发一个仅限Windows托盘的应用程序,我提供退出应用程序的菜单选项。由于我没有关闭应用程序的关闭按钮,当从托盘菜单退出时,我处理该事件并显式调用Form.Close()。看起来我覆盖的Form.onFormClosing()是在我调用Form.Close()的同一个线程上调用的,而Form.onFormClosing()似乎是来自Form.Close()的同步调用。我这么认为是正确的吗?如果是的话,这个映射到应用程序点击关闭按钮的时间是什么?

1 个答案:

答案 0 :(得分:2)

这是对的。关闭时,表单的生命周期就像这样:

  • System.Windows.Forms.Form.Closing
  • System.Windows.Forms.Form.FormClosing
  • System.Windows.Forms.Form.Closed
  • System.Windows.Forms.Form.FormClosed
  • System.Windows.Forms.Form.Deactivate

http://msdn.microsoft.com/en-us/library/86faxx0d%28VS.80%29.aspx

一旦要关闭表单,就会一个接一个地调用这些操作。这就是为什么他们也都在同一个线程上。无论如何,GUI动作应该在主线程(gui线程)上运行。