我们目前正在更新我们的数据库系统和所有文件,现在将它们(32bit-2005 VC#)构建为 64 位。我遇到的事情是使用this.closing += new CancelEventArgs(Event Name);赋值时数据泄漏。我发现它已经过时了,正如同事所说的那样,我正在寻找一种方法来切换到使用 FormClosing 事件。
...
旧代码和事件前。
this.Closing += new CancelEventHandler(AssignUsers_Closing);
private void AssignUsers_Closing(object sender, System.ComponentModel.CancelEventArgs e)
{
try
{
"some event"
}
catch (Exception ex)
{
ShowException se = new ShowException();
se.ShowDialog(ex);
}
}
这是我想转换为 FormClosing 事件的地方,以便 windows 可以为我处理数据泄漏,而不必像这样为每个事件添加一个 -= 语句到 .dispose() 函数。
创意/新代码
private void AssignUserForm_FormClosing(object sender, FormClosingEventArgs e)
{
try
{
*code*
// Use e.cancel to test whether to close the form or not.
}
catch (Exception ex)
{
ShowException se = new ShowException();
se.ShowDialog(ex);
}
}
这会是一个可行的选择吗?有关如何进行此更改的任何建议?
编辑:更好地概述我的问题
改变这个:
public AssignUserForm()
{
InitializeComponent();
InitMe();
try
{
Database.ApplyFieldSecurity(this);
}
catch { }
}
private void InitMe()
{
try
{
this.Closing += new CancelEventHandler(AssignUsers_Closing);
// Get the users from the system
//Binding happens
}
catch (Exception ex)
{
throw ex;
}
}
把它变成我可以使用 Windows 事件来简单地创建 FormClosing 事件的东西。