private void CategoryRepeater_ItemDataBound(object sender, RepeaterItemEventArgs e)
        {
            if (e.Item.ItemType == ListItemType.AlternatingItem || e.Item.ItemType == ListItemType.Item)
            {
                var threadRepeater = (Repeater)e.Item.FindControl("_threadRepeater");

                var category = (e.Item.DataItem as ThreadCategory);
                threadRepeater.DataSource = Threads.FindAll(t => t.CategoryID == category.ID);
                threadRepeater.DataBind();
            }
        }
        /// <summary>
        /// 停止循环工作。
        /// 只能停止循环而已,如果已经有一批任务在处理,
        /// 则内部需要捕获ThreadAbortException异常,否则无法停止任务处理。
        /// </summary>
        public virtual void StopWork()
        {
            NeedStopProcess = true;
            WriteLine("正在停止服务...");

            //停止服务管理线程
            StopManagerThread();

            //if (threads != null && threads.IsAlive) threads.Abort();
            if (Threads != null)
            {
                WriteLine("正在等待现有线程执行完毕...");
                DateTime waitStart = DateTime.Now;
                while (waitStart.AddMinutes(10d) < DateTime.Now)
                {
                    if (Threads.FindAll(t => t.IsAlive).Count() > 0)
                    {
                        //有执行中的线程,就继续等待,最多等待10分钟
                        Thread.Sleep(100);
                    }
                    else
                    {
                        WriteLine("等待超时,强行终止所有线程");
                        break;
                    }
                }

                foreach (var item in Threads)
                {
                    try
                    {
                        if (item != null && item.IsAlive)
                        {
                            item.Abort();
                        }
                    }
                    catch (Exception ex)
                    {
                        WriteLine(ex.ToString());
                    }
                }
            }
            WriteLine("服务已停止");
            //Interactive.Hide();
        }