使用框架ASP.NET Core Blazor + SingleR ,在组件中使用了SingleR连接后台获取数据,发现当组件反复销毁重建20次左右就会出现问题。F12后发现前端报错:
Uncaught Error:The delegate target that is being invoked is no longer available. Please check if it has been prematurely GC'd. 如下图:

这个是一言难尽的问题:https://github.com/dotnet/runtime/issues/55679
在性能不高的机器中比较明显,那我们应该怎么处理呢?经过不断的努力大概确定了一个方向,引起这个错误的原因可能是因为在连接成功后马上发送消息会引起此类错误。在发送前添加延时会得到改善。在使用 await _hubConnection.StartAsync(); 后做一个Task.Delay 如下:
await _hubConnection.StartAsync();
await Task.Delay(TimeSpan.FromMilliseconds(100));
await _hubConnection.SendAsync("AddToGroup", "msg....");