SignalR客户端挂起wait();
这是我的代码
Proxy.Invoke<string>("IO_Table_Game_Status", getTableGameStateJsonReq).ContinueWith((responseJson) =>
{
string tablestatusResp = responseJson.Result;
}).Wait();
这里我需要在tablestatusResp
中获取Json值。但它显示空值。
答案 0 :(得分:1)
因为(据我所知)SignalR正在暴露对真正异步操作的访问(看起来它正在发送HTTP消息),我认为最好让你的应用程序利用这种异步性。这样可以更容易地维护和理解代码,并且当使用Wait方法及其兄弟姐妹时遇到阻塞调用的死锁时,它可以避免陷入巨大的陷阱。
public async Task<TReturnType> YourCurrentMethod()
{
var tableStatusResp await Proxy.Invoke<string>("IO_Table_Game_Status", getTableGameStateJsonReq);
}
请注意,方法签名由我自己完成,您只需将其标记为async
,即可使用await
关键字。
答案 1 :(得分:0)
var data=Proxy.Invoke<string>("IO_Table_Game_Status", getTableGameStateJsonReq).Result;
希望这对你有所帮助。
答案 2 :(得分:0)
谢谢,最后我得到了回答我的问题......我使用了Dispatcher。这是代码
Application.Current.Dispatcher.Invoke(DispatcherPriority.Normal, new Action(() =>
{
string tablestatusResp = Get_Info_Panel_Proxy.Invoke<string>("IO_Table_Game_Status", getTableGameStateJsonReq).Result;
}));
答案 3 :(得分:0)
当集线器未正确初始化时,我得到了这个。尝试用一个干净的构造函数和一个简单的方法创建一个原始的Hub,看看它是否一直挂着。