我有以下的代码,其中SprintServiceClient是一个WCF服务 -删除匿名事件处理
public class OnlineService
{
private SprintServiceClient _client;
public OnlineService()
{
_client = new SprintServiceClient();
}
public void AddMemberToTeam(MemberModel user, int projectId, Action<int> callback)
{
_client.AddMemberToTeamCompleted += (s, e) => callback(e.Result);
_client.AddMemberToTeamAsync(user.ToUser(), projectId);
}
}
问题的引用,每次AddMemberToTeam被称为它增加了一个回调client.AddMemberToTeamCompleted
即第一次AddMemberToTeam被称为回调被调用一次,第二次AddMemberToTeam被称为回调被称为两次等。
一旦事件处理程序被调用或使用另一个接收回调的方法,是否有任何方法从AddMemberToTeamCompleted中删除事件处理程序?
要删除它,你需要一个参考。假设“AddMemberToTeamCompleted”是用'event'关键字定义的(只留下 - =和+ =操作符),你必须用委托实例维护一个变量。第一次创建并添加它,下次不添加,在关闭时删除。 – 2010-11-29 13:00:09
[在C#中取消订阅匿名方法]的可能的重复(http://stackoverflow.com/questions/183367/unsubscribe-anonymous-method-in-c-sharp) – nawfal 2013-07-22 12:16:34