我有一个具有以下两条路线的控制器:
[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
被声明为静态对象。