/// <summary> 开启新线程 </summary> public void NewTaskStart(decimal time, tg_task newtask) { try { if (time < 0) { return; } if (Variable.RoleTask.ContainsKey(newtask.id)) { return; } Variable.RoleTask.TryAdd(newtask.id, true); var token = new CancellationTokenSource(); var task = Task.Factory.StartNew(() => SpinWait.SpinUntil(() => false, (int)time), token.Token); task.ContinueWith(m => { if (Variable.RoleTask.ContainsKey(newtask.id)) { var a = true; Variable.RoleTask.TryRemove(newtask.id, out a); } var taskcheck = tg_task.FindByid(newtask.id); //验证该任务是否还存在,如果武将已经被放逐,任务则不存在 if (taskcheck != null) { PUSH_TASK_END.GetInstance().CommandStart(newtask); } token.Cancel(); }, token.Token); } catch (Exception ex) { XTrace.WriteException(ex); } }
/// <summary>PUSH_TASK_END 单体模式</summary> public static PUSH_TASK_END GetInstance() { return(_objInstance ?? (_objInstance = new PUSH_TASK_END())); }