Example #1
0
        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;
                    }
                }
            }
        }
Example #2
0
        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());
            //}
        }
Example #3
0
        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;
                    }
                }
            }
        }
Example #4
0
        /// <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);
            }
        }