【发布时间】:2011-08-29 20:22:15
【问题描述】:
假设我有一个继承自 Form 的表单 SomeForm。
public class SomeForm : Form
{
private void SomeForm_FormClosed(object sender, FormClosedEventArgs e)
{
MessageBox.Show("FormClosed event in SomeForm class");
}
}
public class Consumer
{
SomeForm someForm = new SomeForm();
someForm = null; //Ideally the messagebox would display here
SomeForm someForm = new SomeForm();
someForm.Close(); //Messagebox would display in this case as well
}
我想在表单关闭时显示 MessageBox。我应该把它放在 FormClosed 事件中吗?假设每次运行诸如析构函数之类的东西时都会触发 FormClosed 事件是否安全?有没有更好的地方放置表单关闭时必须出现的代码?
编辑
有人在下面的 cmets 中提出了一个很好的观点。当类的实例设置为 null 时,似乎事件不会触发。但是,当实例设置为 null 时,是否仍会调用析构函数或其他方法。我想保证我的代码在用户完成课程后运行。
我也知道,强行关闭系统、结束进程、天灾人祸等无论如何都不会导致我的代码运行。 =)
【问题讨论】:
-
您的问题肯定有答案。但是,将时间花在解决您认为可以通过触发这些事件来解决的任何问题上不是更好吗?
-
define “完成了课程” - 你仍然有太多的空缺。作为第一步,描述您正在处理/考虑的一个具体场景,以及您确定的任何其他场景。
-
@Damien_The_Unbeliever 我的问题来自理论讨论。它只是让我质疑事件的可靠性。
-
如果您出于安全原因或完整性原因依赖事件,那么您需要重新审视这些决定。除此之外,我想不出你为什么要要求一个事件发生。