C# - SignalR如何删除我的事件处理程序

vas*_*lag 4 c# delegates xamarin.ios signalr xamarin

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

我的代码很简单:

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

feedHub = _connection.CreateHubProxy ("feedHub");

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

_connection.Start ();   
Run Code Online (Sandbox Code Playgroud)

我的问题是如何删除我的代表?写得够吗?

_connection.Received -= data =>  { OnReceiveData (data); };
Run Code Online (Sandbox Code Playgroud)

任何帮助将非常感激.

N. *_*len 11

您正在使用集线器,为什么不使用内置的开/关进行方法调用?

又名:

var doSomething = feeHub.On<int>("doSomething", val => {
    // Do something with int val
});
Run Code Online (Sandbox Code Playgroud)

然后删除它你可以做:

doSomething.Dispose();
Run Code Online (Sandbox Code Playgroud)

如果您真的想要收听流经集线器的所有数据,那么使用Received是正确的方法,@ Dracanus的答案将起作用.