Blazor the delegate target that is being invoked is no longer available

2021-11-18  乐帮网

signalr

使用框架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. 如下图:

error
这个是一言难尽的问题: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....");

 

公众号二维码

关注我的微信公众号
在公众号里留言交流
投稿邮箱:1052839972@qq.com

庭院深深深几许?杨柳堆烟,帘幕无重数。
玉勒雕鞍游冶处,楼高不见章台路。
雨横风狂三月暮。门掩黄昏,无计留春住。
泪眼问花花不语,乱红飞过秋千去。

欧阳修

付款二维码

如果感觉对您有帮助
欢迎向作者提供捐赠
这将是创作的最大动力