我有一个Button
列表,我为每个按钮添加一个事件处理程序:
List<Button> buttons = new List<Button>();
for (int i = 0; i < 10; i++)
{
Button btn = new Button();
btn.Click = new RoutedEventHandler(OnbtnClick);
buttons.Add(btn);
}
然后我清除了清单:
/* Have I to remove all events here (before cleaning the list), or not?
foreach (Button btn in buttons)
btn.Click -= new RoutedEventHandler(OnbtnClick);
*/
buttons.Clear();
答案 0 :(得分:5)
清除列表后,清除对处理程序的所有引用。一旦处理程序离开作用域(也就是说当函数最终退出并且没有对象引用创建的处理程序时),垃圾收集器将绕过去除所有相关内存(当然是按照它自己的时间表)。
所以不,你不需要手动删除处理程序。
答案 1 :(得分:1)
检查此解决方案:How to remove all event handlers from a control
这就是你之后的事情。给这个帮助。