signalR客户端挂起wait()

本文关键字:wait 挂起 客户端 signalR | 更新日期: 2023-09-27 18:28:47

SignalR客户端挂起wait();
这是我的代码

Proxy.Invoke<string>("IO_Table_Game_Status", getTableGameStateJsonReq).ContinueWith((responseJson) =>
{
    string tablestatusResp = responseJson.Result;
}).Wait();

这里我需要得到tablestatusResp中的Json值。但它显示的是空值。

signalR客户端挂起wait()

由于(据我所知)SignalR公开了对真正异步操作的访问(看起来像是在发送HTTP消息),我认为最好让您的应用程序利用这种异步性。它使代码的维护和理解更加容易,并且在使用Wait方法及其兄弟方法时,当遇到阻塞调用的死锁时,它使您免于陷入bajillion陷阱。

public async Task<TReturnType> YourCurrentMethod()
{
    var tableStatusResp await Proxy.Invoke<string>("IO_Table_Game_Status", getTableGameStateJsonReq);
}

请注意,方法签名是由我编写的,您所要做的就是将其标记为async,这样您就可以使用await关键字。

var data=Proxy.Invoke<string>("IO_Table_Game_Status", getTableGameStateJsonReq).Result;

希望这对你有所帮助。

谢谢你,我终于得到了问题的答案。。。我用过Dispatcher。这是代码

 Application.Current.Dispatcher.Invoke(DispatcherPriority.Normal, new Action(() =>
                {
                  string  tablestatusResp = Get_Info_Panel_Proxy.Invoke<string>("IO_Table_Game_Status", getTableGameStateJsonReq).Result;
                }));                   

当我的集线器没有正确初始化时,我得到了这个。尝试创建一个原始的Hub,使用一个干净的构造函数和一个简单的方法来查看它是否一直挂起。