У меня есть контроллер со следующими двумя маршрутами:
[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
объявлен как статический объект.