public void Listen_Messages() { Console.WriteLine("监听GameHall窗体消息的线程已经开启"); while (true) { if (ClientInfo.messages.Count == 0) { Thread.Sleep(100); continue; } else { //Console.WriteLine("踢我"); ClientInfo.message_type message_; ClientInfo.messages.TryDequeue(out message_); //ClientInfo.message_type message = ClientInfo.messages.First(); switch (message_) { case ClientInfo.message_type.kick: Dispatcher.BeginInvoke(new Action(() => { current_message = ClientInfo.message_type.kick; Pop_Message_Window("已经被服务器踢出"); })); break; default: break; } } } }
private void _KickNotification(Message message) { ClientInfo.message_type kick_message = ClientInfo.message_type.kick; ClientInfo.messages.Enqueue(kick_message); //try //{ // ThreadPool.QueueUserWorkItem(delegate // { // try // { // var cur = Application.Current; // SynchronizationContext.SetSynchronizationContext(new // DispatcherSynchronizationContext(cur.Dispatcher)); // SynchronizationContext.Current.Post(pl => // { // //里面写真正的业务内容 // cur.Shutdown(); // }, null); // } // catch(Exception e) // { // Console.WriteLine(e.ToString()); // } // }); //} //catch (Exception e) //{ // Console.WriteLine(e.ToString()); //} }
public void Listen_Messages() { Console.WriteLine("监听GameHall窗体消息的线程已经开启"); while (true) { if (ClientInfo.messages.Count == 0) { Thread.Sleep(100); continue; } else { //Console.WriteLine("踢我"); ClientInfo.message_type message_; ClientInfo.messages.TryDequeue(out message_); //ClientInfo.message_type message = ClientInfo.messages.First(); switch (message_) { case ClientInfo.message_type.kick: Dispatcher.BeginInvoke(new Action(() => { current_message = ClientInfo.message_type.kick; Pop_Message_Window("您的账号已经在其他设备上登录。\n如果不是您的操作,请检查密码是否\n泄露,尽快更改密码或联系安全中心"); })); break; case ClientInfo.message_type.game_crush_peer: Dispatcher.BeginInvoke(new Action(() => { current_message = ClientInfo.message_type.game_crush_peer; Pop_Message_Window("对方已经退出了游戏"); mainWindow.Close(); })); break; case ClientInfo.message_type.game_crush_server: Dispatcher.BeginInvoke(new Action(() => { current_message = ClientInfo.message_type.game_crush_server; Pop_Message_Window("服务器异常,游戏退出"); mainWindow.Close(); })); break; default: break; } } } }
/// <summary> /// 对游戏崩溃通知信息的处理 /// </summary> /// <param name="data"></param> private void _GameCrushNotification(Message message) { GamecrushNotification gamecrushNotification = message.Gamecrushnotification; GamecrushNotification.Types.CrushReason reason = gamecrushNotification.Reason; if (reason == GamecrushNotification.Types.CrushReason.OpponentOff) { ClientInfo.message_type crash_message = ClientInfo.message_type.game_crush_peer; ClientInfo.messages.Enqueue(crash_message); } else { ClientInfo.message_type crash_message = ClientInfo.message_type.game_crush_server; ClientInfo.messages.Enqueue(crash_message); } }