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.
4 Antworten
var data=Proxy.Invoke<string>("IO_Table_Game_Status", getTableGameStateJsonReq).Result;
Hoffe das hilft dir.
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.
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;
}));
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.
Neue Fragen
c#
C # (ausgesprochen "siehe scharf") ist eine statische Typisierungsprogrammiersprache mit mehreren Paradigmen, die von Microsoft entwickelt wurde. C # -Code zielt normalerweise auf die .NET-Tools und -Laufzeiten von Microsoft ab, zu denen unter anderem .NET Framework, .NET Core und Xamarin gehören. Verwenden Sie dieses Tag für Fragen zu Code, der in der formalen Spezifikation von C # oder C # geschrieben ist.