SignalR ядро ​​hubconnection лямбда-действия - PullRequest
0 голосов
/ 22 февраля 2019

У меня есть простое соединение с центральным концентратором SignalR, а у концентраторного соединения есть метод On, который использует обработчик действий. У меня в настоящее время есть лямбда-код, подобный следующему, но я хочу использовать обработчик событий, чтобы я мог легко отписаться от него ипредотвратить утечки памяти.

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

1 Ответ

0 голосов
/ 22 февраля 2019

Использование делегата:

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;
    }
}
...