WPF客户端SocketIO回调异常:事件触发后需关闭程序才执行
WPF Socket.IO客户端事件回调延迟执行问题
我正在开发WPF客户端-服务器应用,目前使用SocketIOClient库通过WebSocket协议与服务器通信,事件声明代码如下:
private void DeclareGetDataEvents() { _socket.On("UpdateRivalPoints", (data) => { RivalPoints++; }); _socket.On("WinGame", (data) => { this.IsUserWin = true; }); _socket.On("OnlineFreeUsers", (users) => { UsersNames = JsonConvert.DeserializeObject<ObservableCollection<string>>($"[{users.ToString().Trim(new Char[] {'[', ']', '\\'})}]"); }); _socket.On("WantedPlay", (rivalName) => { IsRequestReceived = true; RivalName = rivalName.ToString().Trim(new Char[] { '[', ']', '"' }); PlayRequestString = $"{RivalName} want to play!"; }); _socket.On("StartPlay", (data) => { IsGameOnline = true; RivalPoints = 0; IsUserWin = false; App.Current.Dispatcher.Invoke(() => { var window = new GameView(); window.ShowDialog(); }); }); _socket.On("RefusedPlay", (data) => { PlayRequestString = $"{RivalName} refused to play against you"; }); }
现在遇到的问题是:UpdateRivalPoints和WinGame事件内的回调不会在事件到达时立即执行,只有关闭程序后才会触发。
我尝试使用BeginInvoke改写回调,代码如下:
_socket.On("UpdateRivalPoints", async(data) => await App.Current.Dispatcher.BeginInvoke(System.Windows.Threading.DispatcherPriority.Send,new UpdateRivalPointsDelegate(UpdateRivalPointsMethod)));
但问题仍未解决。
备注:On方法的参数要求为string eventName和Action<SocketIOResponse> callback。
内容的提问来源于stack exchange,提问作者Avi C
相关产品推荐
相关产品推荐

