如何在控件中删除处理程序

时间:2011-09-28 13:49:22

标签: silverlight asynchronous event-handling

我有一个构造函数中的控件

_myWebService.ForwardMessageCompleted + = new EventHandler(OnForwardMessageCompleted);

private void OnForwardMessageCompleted(object sender, AsyncCompletedEventArgs e)
        {
            activity.IsActive = false;
            if (e.Error == null)
            {
                RadWindow.Alert("The message has been forwarded");
            }
        }

控件具有消息列表,用户可以将其转发给其他用户。 问题是,用户多次打开此控件,每次创建处理程序时都会将其添加到

_myWebService.ForwardMessageCompleted

如何删除此事件的处理?

1 个答案:

答案 0 :(得分:2)

因为您正在控件的构造函数中连接外部事件处理程序,所以该事件侦听器也充当指向控件的指针(因此它不会被销毁并且代码会为控件的每个实例调用)。

您希望捕获控件的Unloaded事件并将以下内容添加到该处理程序(以断开事件侦听器):

_myWebService.ForwardMessageCompleted -= OnForwardMessageCompleted;