У меня есть центр уведомлений, который работает в фоновом режиме каждые несколько секунд и извлекает новые уведомления из БД, если есть подписки на его событие, он запускает событие с новыми уведомлениями.Невозможно отказаться от подписки на функцию signalR hub от события singelton
С другой стороны, у меня есть клиенты signalR, что подписаться на это событие так:
public void Subscribe()
{
NotificationCenter.OnNotificationArrived += PublishNotifications;
}
В тот же хаб у меня есть этот метод, который удаляет подписку:
public override System.Threading.Tasks.Task OnDisconnected()
{
NotificationCenter.OnNotificationArrived -= PublishNotifications;
return base.OnDisconnected();
}
В PublishNotifications метод также лежит в одном и том же узле.
Когда я отлаживаю свой код, я вижу, что событие сначала равно null. После первой подписки событие имеет один метод. После очередной подписки событие имеет 2 метода. После удаления подписки событие все еще содержит 2 метода.
Любая идея, что я делаю неправильно?
BTW: Я использую signalr 1,2
Похоже, вы вызываете 'OnDisconnected' в другом экземпляре класса, чем тот, который вы вызываете' Подписаться'. –
Вы правы, это не тот хаб. как это произошло и как я могу его решить? – Avi
Мы не можем сказать, я боюсь ... –