/// <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); }
/// <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); } } } } }
/// <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); }
/// <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); } } }); } } }
/// <summary> /// 执行创建线程,执行结束清除 /// </summary> /// <param name="thread">线程</param> public void Attach(MagicThread thread) { this.Attach(thread, new CancellationTokenSource()); }