/// <summary>
        /// 添加当前线程
        /// </summary>
        protected void AddCurrentThread()
        {
            try
            {
                Monitor.Enter(lockObject);

                if (Application["ThreadMessageCollection"] == null)
                {
                    Application["ThreadMessageCollection"] = new ThreadMessageCollection();
                }
                ThreadMessageCollection threadTable = Application["ThreadMessageCollection"] as ThreadMessageCollection;

                threadTable.Add(new ThreadMessage()
                {
                    ModuleName = Context.Request.Url.ToString(),
                    MethodName = Context.Request.UserAgent,
                    Parameters = new object[] { Context.Request.UserHostAddress },
                    ThreadId   = Thread.CurrentThread.ManagedThreadId,
                    StartTime  = DateTime.Now
                }, Thread.CurrentThread);
            }
            finally
            {
                Monitor.Exit(lockObject);
            }
        }
        private void BindGridView()
        {
            ThreadMessageCollection threadTable = Application["ThreadMessageCollection"] as ThreadMessageCollection;
            List <ThreadMessage>    datas       = null;

            if (threadTable != null)
            {
                datas = threadTable.ToList();
            }
            if (datas == null)
            {
                datas = new List <ThreadMessage>();
            }

            this.gvThreads.DataSource = datas;
            this.gvThreads.DataBind();
        }
        /// <summary>
        /// 移除当前线程
        /// </summary>
        protected void RemoveCurrentThread()
        {
            try
            {
                Monitor.Enter(lockObject);

                if (Application["ThreadMessageCollection"] == null)
                {
                    return;
                }
                ThreadMessageCollection threadTable = Application["ThreadMessageCollection"] as ThreadMessageCollection;
                threadTable.Remove(Thread.CurrentThread.ManagedThreadId);
            }
            finally
            {
                Monitor.Exit(lockObject);
            }
        }
        protected void btnAbort_Click(object sender, EventArgs e)
        {
            int threadId = 0;

            int.TryParse(((System.Web.UI.WebControls.LinkButton)(sender)).CommandArgument, out threadId);

            ThreadMessageCollection threadTable = Application["ThreadMessageCollection"] as ThreadMessageCollection;

            if (threadTable != null)
            {
                try
                {
                    threadTable.AbortThread(threadId);
                    this.lblMessage.Text = string.Format("进程{0}已结束", threadId);
                }
                catch (Exception ex)
                {
                    this.lblMessage.Text = ex.ToString();
                }
            }

            BindGridView();
        }