private void Refresh_Click(object Sender, EventArgs e)
        {
            ThreadInfoPanel TPanel = Sender as ThreadInfoPanel;
            int             Id     = Convert.ToInt32(TPanel.Tag);

            if (ThreadDic.ContainsKey(Id))
            {
                Thread CurThread = ThreadDic[Id];
                TPanel.SetThreadInfo(CurThread);
            }
        }
        public void ShowPanelMsg(ThreadInfoPanel sender, object msg)
        {
            sender.Msg = msg.ToString();
            int Id = Convert.ToInt32(sender.Tag);

            if (ThreadDic.ContainsKey(Id))
            {
                sender.SetThreadInfo(ThreadDic[Id]);
            }
            //if (sender.InvokeRequired)
            //    sender.SetThreadInfo();
        }
        private void Btn_PriorityClick(object Sender, EventArgs e)
        {
            ThreadInfoPanel TPanel = Sender as ThreadInfoPanel;
            int             Id     = Convert.ToInt32(TPanel.Tag);

            if (ThreadDic.ContainsKey(Id))
            {
                Thread CurThread = ThreadDic[Id];
                if (CurThread.IsAlive)
                {
                    int CurPriority = (int)CurThread.Priority;
                    if (CurPriority >= 4)
                    {
                        CurPriority = 0;
                    }
                    else
                    {
                        CurPriority++;
                    }
                    CurThread.Priority = (ThreadPriority)CurPriority;
                }
                TPanel.SetThreadInfo(CurThread);
            }
        }
        private void Btn_ActClick(object Sender, EventArgs e)
        {
            ThreadInfoPanel TPanel = Sender as ThreadInfoPanel;
            int             Id     = Convert.ToInt32(TPanel.Tag);

            if (ThreadDic.ContainsKey(Id))
            {
                if (ThreadDic[Id].IsAlive)
                {
                    ThreadDic[Id].Abort();
                    if (TPDic.ContainsKey(ThreadDic[Id].ManagedThreadId))
                    {
                        TPDic.Remove(ThreadDic[Id].ManagedThreadId);
                    }
                    TPanel.SetThreadInfo(ThreadDic[Id]);
                }
                else
                {
                    Thread thread = new Thread(TPanel.ThreadFunc);
                    thread.Name          = DateTime.Now.ToLongTimeString();
                    TPanel.Tag           = thread.ManagedThreadId;
                    TPanel.num           = 0;
                    TPanel.GroupBox.Text = thread.Name;
                    if (!TPDic.ContainsKey(thread.ManagedThreadId))
                    {
                        TPDic.Add(thread.ManagedThreadId, TPanel);
                    }
                    else
                    {
                        TPDic[thread.ManagedThreadId] = TPanel;
                    }
                    if (!ThreadDic.ContainsKey(thread.ManagedThreadId))
                    {
                        ThreadDic.Add(thread.ManagedThreadId, thread);
                    }
                    else
                    {
                        ThreadDic[Id] = thread;
                    }
                    thread.Start();
                    TPanel.SetThreadInfo(thread);
                }
            }
            //if(Sender is ThreadInfoPanel)
            //{
            //    ThreadInfoPanel TPanel = Sender as ThreadInfoPanel;
            //    int ManagedThreadId = -1;
            //    foreach (KeyValuePair<int, ThreadInfoPanel> pair in TPDic)
            //    {
            //        if(TPanel == pair.Value)
            //        {
            //            ManagedThreadId = pair.Key;
            //        }
            //    }
            //    foreach(ProcessThread Thread in Process.GetCurrentProcess().Threads)
            //    {
            //        if(Thread.Id== ManagedThreadId)
            //        {
            //            Thread.ThreadState
            //        }
            //    }
            //}
        }