tengo el siguiente código donde SprintServiceClient es una referencia a una WCF Service-Eliminación de controlador de eventos anónimo
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);
}
}
El problema es que cada vez que se llama AddMemberToTeam que añade otra devolución de llamada a client.AddMemberToTeamCompleted
es decir, la primera vez que se llama AddMemberToTeam se llama a la devolución de llamada una vez, la segunda vez que se llama a AddMemberToTeam, la devolución de llamada se llama dos veces ect.
¿Hay alguna forma de eliminar el controlador de eventos de AddMemberToTeamCompleted una vez que se ha llamado al controlador de eventos o utilizar otro método que acepte la devolución de llamada?
Para quitarlo, necesita una referencia. Suponiendo que "AddMemberToTeamCompleted" se define con la palabra clave "event" (dejando solo los operadores - = y + =), tendrá que mantener una variable con la instancia de delegado. Crear y agregarlo la primera vez, no agregar la próxima vez, eliminar al cerrar. –
posible duplicado de [Anular suscripción método anónimo en C#] (http://stackoverflow.com/questions/183367/unsubscribe-anonymous-method-in-c-sharp) – nawfal