4

我是一个 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); };

任何帮助将非常感激。

4

2 回答 2

15

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

又名:

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

然后要删除它,您可以执行以下操作:

doSomething.Dispose();

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

于 2013-04-23T18:13:23.013 回答
4

我可能是错的,但如果你这样做,它实际上不会取消订阅该事件。

无论如何,它并没有出现在我编写的一个小测试应用程序中。

而是创建一个函数,例如

void Connection_Recieved(string obj)
{
}

并做 connection.Recieved += Connection_Recieved; 和 connection.Recieved -= Connection_Recieved;

我不认为匿名事件函数是去这里的方式:)

我假设,看看你可以做的代码示例,

   connection.Recieved += OnReceiveData;
   connection.Recieved -= OnReceiveData;
于 2013-04-23T15:08:31.570 回答