private AwaitableTask PenddingTask(AwaitableTask task) { lock (_queue) { Debug.Assert(task != null); _queue.Enqueue(task); _autoResetEvent.Set(); } return(task); }
private bool TryGetNextTask(out AwaitableTask task) { task = null; while (_queue.Count > 0) { if (_queue.TryDequeue(out task) && (!AutoCancelPreviousTask || _queue.Count == 0)) { return(true); } task.Cancel(); } return(false); }
/// <summary> /// 初始化任務等待器 /// </summary> /// <param name="awaitableTask"></param> public TaskAwaiter(AwaitableTask <TResult> awaitableTask) => _task = awaitableTask;
/// <summary> /// 任務等待器 /// </summary> /// <param name="awaitableTask"></param> public TaskAwaiter(AwaitableTask awaitableTask) => _task = awaitableTask;