我有以下代码,其中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中删除事件处理程序,或者使用另一种接受回调函数的方法?