我正在开发wpf游戏,通过WebSocket协议连接到nodejs服务器。现在,事件工作正常,直到游戏开始,然后开事件不工作。例如,如果我从服务器发送事件到客户端,而客户端在主窗口,事件工作没有任何问题,但如果我发送相同的事件,而用户在游戏窗口,回调事件没有启动。
如果我在回调事件上设置断点,则只有当我关闭窗口(按下X)时,程序才会在断点处停止。
这就是我声明On事件的方式:
_socket.On("UpdateRivalPoints", (respone) =>
{
App.Current.Dispatcher.Invoke(() => RivalPoints++);
});
1条答案
按热度按时间5f0d552i1#
问题似乎与WPF调度程序有关,当游戏窗口处于活动状态时,WPF调度程序可能无法运行事件回调。要解决此问题,您可以尝试以下操作:
使用Dispatcher.BeginInvoke方法而不是Invoke。将事件回调内的代码 Package 在try-catch块中,以处理可能发生的任何异常。在运行事件回调之前,请检查游戏窗口是否仍处于打开状态。示例: