我有一个Windows.Forms应用程序,其中包含一个填充了帐户对象的ListBox。当用户从列表中选择一个帐户时,我会附加一个事件处理程序,负责在用户查看期间有任何新事务时更新所选帐户的交易。
private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
{
var selected = listBox1.SelectedItem as Account;
if (selected != null)
{
UpdateTransactions(selected);
selected.OnNewTransaction += (s, a) => UpdateTransactions(selected);
}
}
那么我的问题如下:当用户从列表中选择另一个账户并且所选账户超出范围时,这个事件处理程序是否会自动释放? 还是它会继续存在,然后如果用户再次选择相同的账户,就会分配另一个处理程序,从而创建内存泄漏?