我有以下的代碼,其中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