【问题标题】:SignalR Core InvokeAsync FreezesSignalR 核心 InvokeAsync 冻结
【发布时间】:2019-10-08 07:37:17
【问题描述】:

我之前一直使用 SendAsync 方法来调用我的 SignalR Core 集线器,没有任何问题。我意识到,如果服务器上出现错误,我永远不会通过 SendAsync 从客户端知道它,所以我决定使用具有完全相同参数的 InvokeAsync。当调用 InvokeAsync 时,我可以知道我的集线器被调用并且它处理正确,但是客户端上的调用(“等待 InvokeAsync”)冻结。它只是锁定并且永远不会进入下一行代码。这是一个 WPF 应用程序。会发生什么? await SendAsync 立即返回,从未以这种方式锁定。

【问题讨论】:

  • 您是否正在阻塞调用堆栈中更靠前的任务?即,调用Wait 或Result?

标签: asp.net-core-signalr


【解决方案1】:

我发现了问题。原来是因为从 WPF 应用程序发送的消息也被 WPF 应用程序接收,当我在收到消息时尝试更新 UI 时导致阻塞问题。我更新了接收代码以使用 Dispatcher.BeginInvoke,而不是 Dispatcher.Invoke,现在它可以工作了。当我从 SignalR 客户端调用 SendAsync 时,这不是问题。

【讨论】:

    猜你喜欢
    • 2011-12-10
    • 2018-09-21
    • 2019-08-18
    • 1970-01-01
    • 1970-01-01
    • 2019-07-19
    • 2019-07-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多