【问题标题】:C# - SignalR How can I remove my event handlerC# - SignalR 如何删除我的事件处理程序
【发布时间】:2013-04-23 14:54:10
【问题描述】:
我是一名 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 ();
我的问题是如何删除我的代表?
写够了吗?
_connection.Received -= data => { OnReceiveData (data); };
任何帮助将不胜感激。
【问题讨论】:
标签:
c#
delegates
xamarin.ios
signalr
xamarin
【解决方案1】:
您使用的是集线器,为什么不使用内置的 on/off 进行方法调用?
又名:
var doSomething = feeHub.On<int>("doSomething", val => {
// Do something with int val
});
然后删除它你可以这样做:
doSomething.Dispose();
如果您真的想收听流经集线器的所有数据,那么使用 Received 是正确的方法,@Dracanus 的回答会奏效。
【解决方案2】:
我可能是错的,但如果你这样做,它实际上并不会取消订阅该活动。
反正我写的一个小测试应用程序中没有。
而是创建一个函数,例如
void Connection_Recieved(string obj)
{
}
然后做connection.Recieved += Connection_Recieved;
和 connection.Recieved -= Connection_Recieved;
我不认为匿名事件函数是这里的方法:)
我假设,看看你可以做的代码示例,
connection.Recieved += OnReceiveData;
connection.Recieved -= OnReceiveData;