コード例 #1
0
ファイル: EvLoop.cs プロジェクト: x1larus/Client
        public void Loop()
        {
            while (IsActive)
            {
                lock (QueueLock)
                {
                    if (TaskQueue.Count != 0)
                    {
                        Wait.Set();
                    }
                }
                Wait.WaitOne();
                Tuple <string, Dictionary <string, string> > Temp;
                lock (QueueLock)
                {
                    Temp = TaskQueue.Dequeue();
                }
                //tasks
                switch (Temp.Item1)
                {
                case "RecvParse":
                    RecvParser(Temp.Item2);
                    break;

                case "global":
                    GlobalChatNewMsg(Temp.Item2);
                    break;

                case "SendToServer":
                    BuildRequest(Temp.Item2);
                    break;

                case "SystemError":
                    ErrorToGUI(Temp.Item2);
                    break;

                case "exit":
                    IsActive = false;
                    BuildRequest(Temp.Item2);
                    Sender.RecvThr.Join();
                    return;

                case "auth":
                    if (Temp.Item2["AUTH"] == "true")
                    {
                        LoginGUI.Invoke(LoginGUI.SuccesfulLoginDelegate);
                    }
                    break;

                case "online":
                    ParseOnlineUsers(Temp.Item2);
                    break;
                }

                Wait.Reset();
            }
        }