Ejemplo n.º 1
0
        /// <summary>
        /// 搜索线程
        /// </summary>
        /// <param name="key">线程标识</param>
        /// <returns>MagicThread</returns>
        public MagicThread Search(string key)
        {
            MagicThread thread = null;

            {
                lock (this.taskLibrary)
                {
                    if (this.taskLibrary.ContainsKey(key))
                    {
                        thread = this.taskLibrary[key] as MagicThread;
                    }
                }
            }
            return(thread);
        }
Ejemplo n.º 2
0
 /// <summary>
 /// 撤销某一项任务线程
 /// </summary>
 /// <param name="thread">线程</param>
 public void Detach(MagicThread thread)
 {
     if (thread != null)
     {
         thread.Cancel();
         {
             lock (this.taskLibrary)
             {
                 if (this.taskLibrary.ContainsKey(thread.Key))
                 {
                     this.taskLibrary.Remove(thread.Key);
                 }
             }
         }
     }
 }
Ejemplo n.º 3
0
        /// <summary>
        /// 撤销某一项任务线程
        /// </summary>
        /// <param name="key">线程标识</param>
        public void Detach(string key)
        {
            MagicThread thread = null;

            {
                lock (this.taskLibrary)
                {
                    if (this.taskLibrary.ContainsKey(key))
                    {
                        thread = this.taskLibrary[key] as MagicThread;
                    }
                }
            }
            // 撤销线程
            this.Detach(thread);
        }
Ejemplo n.º 4
0
 /// <summary>
 /// 执行创建线程,执行结束清除
 /// </summary>
 /// <param name="thread">线程</param>
 /// <param name="reactor">线程取消管理</param>
 public void Attach(MagicThread thread, CancellationTokenSource reactor)
 {
     if (!this.IsDestroy && !reactor.IsCancellationRequested)
     {
         // 加入线程集合
         lock (this.taskLibrary)
         {
             if (this.taskLibrary.ContainsKey(thread.Key))
             {
                 {
                     thread.Reactor = null;
                 }
                 return;
             }
             else
             {
                 {
                     thread.Reactor = reactor;
                 }
                 this.taskLibrary.Add(thread.Key, thread);
             }
         }
         // 启动线程
         if (!MatchUtils.IsEmpty(thread.Reactor))
         {
             (this.taskFactory.StartNew(thread.Fun, reactor.Token, thread.Policy != TaskCreationOptions.PreferFairness ? thread.Policy : this.taskOptions, this.taskProvide)).ContinueWith((task) =>
             {
                 // 线程执行完在集合中删除
                 lock (this.taskLibrary)
                 {
                     if (this.taskLibrary.ContainsKey(thread.Key))
                     {
                         this.taskLibrary.Remove(thread.Key);
                     }
                 }
             });
         }
     }
 }
Ejemplo n.º 5
0
 /// <summary>
 /// 执行创建线程,执行结束清除
 /// </summary>
 /// <param name="thread">线程</param>
 public void Attach(MagicThread thread)
 {
     this.Attach(thread, new CancellationTokenSource());
 }