public static CtkCancelTask RunOnce(Action <CancellationToken> act) { var task = new CtkCancelTask(); var ct = task.CancelTokenSource.Token; task.Task = Task.Factory.StartNew(() => { act(ct); }, ct); return(task); }
/// <summary> /// /// </summary> /// <param name="funcIsContinue">if return ture then continue</param> /// <returns></returns> public static CtkCancelTask RunLoop(Func <bool> funcIsContinue) { var task = new CtkCancelTask(); var ct = task.CancelTokenSource.Token; task.Task = Task.Factory.StartNew(() => { while (!ct.IsCancellationRequested) { ct.ThrowIfCancellationRequested(); if (!funcIsContinue()) { break; } } }, ct); return(task); }