无法取消订阅控制器内的事件

时间:2019-01-25 10:00:09

标签: angular http events .net-core subscription

我有一个具有以下两条路线的控制器:

[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被声明为静态对象。

0 个答案:

没有答案