【问题标题】:SignalR core hubconnection lambda actionSignalR 核心集线器连接 lambda 动作
【发布时间】:2019-02-21 21:16:44
【问题描述】:

我有一个简单的 SignalR 核心集线器连接,集线器连接有一个 On 方法,该方法接受一个动作处理程序我目前有一个像下面这样的 lambda,但我想使用一个事件处理程序,所以我可以轻松取消订阅它并且防止任何内存泄漏。

hubConnection.On<string, string>(ReceiveMethodKey, (user, message) =>
            {
                var finalMessage = $"{user} says {message}";
                // Update the UI
            });

【问题讨论】:

  • 为什么不传递delegate?您可以取消它,就像一个事件一样。
  • 你能给我举个例子吗? @Zer0

标签: c# lambda signalr signalr-hub


【解决方案1】:

使用委托:

class MyClass : IDisposable
{
    private Action<string, string> HubConnectionOnDelegate;

    private void InitOrSomething()
    {
        //Pointer to a method, anonymous method, whatever...
        HubConnectionOnDelegate = HubConnection_On;
    }

    private static void HubConnection_On(string user, string message)
    {
        var finalMessage = $"{user} says {message}";
        // Update the UI
    }

    private void Elsewhere()
    {
        hubConnection.On<string, string>(ReceiveMethodKey, HubConnectionOnDelegate);
    }

    public void Dispose()
    {
        HubConnectionOnDelegate = null;
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-01
    • 2019-06-30
    • 1970-01-01
    • 2013-11-24
    相关资源
    最近更新 更多