1

这更像是一个我想纠正的概念而不是一个问题,所以在我尝试处理这个问题时请原谅我的含糊之处:

我正在开发一个仅限 Windows 托盘的应用程序,我在其中提供了一个用于退出应用程序的菜单选项。由于我没有关闭应用程序的关闭按钮,因此当从托盘菜单中退出时,我会处理该事件并显式调用 Form.Close()。似乎我覆盖的 Form.onFormClosing() 是在我调用 Form.Close() 的同一线程上调用的,而 Form.onFormClosing() 似乎是来自 Form.Close() 的同步调用。我这样想对吗?如果我是,这如何映射到应用程序上单击“关闭”按钮的时间?

4

1 回答 1

2

这是对的。关闭时窗体的 Livecycle 是这样的:

  • 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 线程)上运行。

于 2013-07-26T06:01:14.657 回答