【问题标题】: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;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-11-14
      • 1970-01-01
      • 2010-11-21
      • 2015-05-22
      • 1970-01-01
      • 2010-10-22
      • 2013-05-13
      • 1970-01-01
      相关资源
      最近更新 更多