Der SignalR-Client hängt an wait();
Hier ist mein Code

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

Hier muss ich den Json-Wert in tablestatusResp erhalten. Aber es zeigt einen leeren Wert.

1
user5505818 4 Jän. 2016 im 10:33

4 Antworten

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

Hoffe das hilft dir.

0
smottt 4 Jän. 2016 im 09:07

Da SignalR (soweit ich das beurteilen kann) den Zugriff auf eine echte asynchrone Operation verfügbar macht (es sieht so aus, als würde es HTTP-Nachrichten senden), ist es meiner Meinung nach am besten, wenn Sie Ihre Anwendung diese Asynchronität nutzen lassen. Es erleichtert das Verwalten und Verstehen von Code und erspart Ihnen die bajillion Fallstricke, wenn es um Deadlocks beim Blockieren von Anrufen bei Verwendung der Wait-Methode und ihrer Geschwister geht.

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

Beachten Sie, dass die Methodensignatur von mir erstellt wurde. Sie müssen sie lediglich als async markieren, damit Sie das Schlüsselwort await verwenden können.

1
sara 4 Jän. 2016 im 08:04

Danke, endlich habe ich eine Antwort auf meine Frage bekommen ... ich habe Dispatcher benutzt. Hier ist der Code

 Application.Current.Dispatcher.Invoke(DispatcherPriority.Normal, new Action(() =>
                {
                  string  tablestatusResp = Get_Info_Panel_Proxy.Invoke<string>("IO_Table_Game_Status", getTableGameStateJsonReq).Result;
                }));                   
0
5 Jän. 2016 im 07:19

Ich habe dies erhalten, als mein Hub nicht richtig initialisiert wurde. Versuchen Sie, einen unformatierten Hub mit einem sauberen Konstruktor und einer einfachen Methode zu erstellen, um festzustellen, ob er weiterhin hängt.

0
Allan Zeidler 20 Apr. 2020 im 13:39