C#-signer如何删除事件处理程序

C#-signer如何删除事件处理程序,c#,delegates,xamarin.ios,signalr,xamarin,C#,Delegates,Xamarin.ios,Signalr,Xamarin,我是一个新手,试图在我的Xamarin IOS应用程序中实现SignalR 我的代码非常简单: _connection = new Microsoft.AspNet.SignalR.Client.Hubs.HubConnection (Common.signalRAddress); feedHub = _connection.CreateHubProxy ("feedHub"); _connection.Received += data => { OnReceiveData (da

我是一个新手,试图在我的Xamarin IOS应用程序中实现SignalR

我的代码非常简单:

 _connection = new Microsoft.AspNet.SignalR.Client.Hubs.HubConnection (Common.signalRAddress);

feedHub = _connection.CreateHubProxy ("feedHub");

_connection.Received += data =>  { OnReceiveData (data); };

_connection.Start ();   
我的问题是如何删除我的代理? 写够了吗

_connection.Received -= data =>  { OnReceiveData (data); };

任何帮助都将不胜感激。

我可能错了,但如果你这样做,它实际上不会取消活动的订阅

不管怎么说,我写的一个小测试应用程序都没有

而是创建一个函数,例如

void Connection_Recieved(string obj)
{
}
并进行连接。Received+=连接\u Received; 和连接。已接收-=已接收的连接

我不认为匿名事件函数在这里是可行的:)

我假设,看看你的代码样本,你可以

   connection.Recieved += OnReceiveData;
   connection.Recieved -= OnReceiveData;

如果您使用的是集线器,为什么不使用内置的on/off进行方法调用呢

又名:


如果您真的想监听通过集线器传输的所有数据,那么使用Received是正确的方法,@Dracanus的答案将起作用。

是。这就是删除代理的方式!可能重复的
var doSomething = feeHub.On<int>("doSomething", val => {
    // Do something with int val
});
doSomething.Dispose();