signalR客户端挂起等待()

时间:2016-01-04 07:33:50

标签: c# signalr-hub signalr.client

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

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

这里我需要在tablestatusResp中获取Json值。但它显示空值。

4 个答案:

答案 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,看看它是否一直挂着。