Не могу отписаться от события внутри контроллера - PullRequest
0 голосов
/ 25 января 2019

У меня есть контроллер со следующими двумя маршрутами:

[HttpGet("start")]
public IEnumerable<bool> StartDataStreaming()
{
    if(SomeService.MyService != null)
    {
        SomeService.MyService.PrimaryMessageReceived += MyService_PrimaryMessageReceived;
        SignalRStreamingManager.IsStreamingOn = true;
    }

    return new bool[] { SignalRStreamingManager.IsStreamingOn };
}

[HttpGet("stop")]
public IEnumerable<bool> StopDataStreaming()
{
    SomeService.MyService.PrimaryMessageReceived -= MyService_PrimaryMessageReceived;
    SignalRStreamingManager.IsStreamingOn = false;
    return new bool[] { SignalRStreamingManager.IsStreamingOn };
}

Теперь, когда я впервые захожу на страницу, вызывается метод StartDataStreaming(), и все работает как положено.

Проблема появляется, когда я покидаю страницу (вызывается StopDataStreaming()), и я снова вхожу на страницу. Теперь у меня будет две подписки на одно и то же сообщение, и каждая подписка будет создаваться каждый раз, когда я ухожу и снова захожу на эту страницу.

Почему это происходит? Как правильно отписаться от события PrimaryMessageReceived?

Редактировать: SomeService объявлен как статический объект.

...