Exemplo n.º 1
0
 private AwaitableTask PenddingTask(AwaitableTask task)
 {
     lock (_queue)
     {
         Debug.Assert(task != null);
         _queue.Enqueue(task);
         _autoResetEvent.Set();
     }
     return(task);
 }
Exemplo n.º 2
0
 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);
 }
Exemplo n.º 3
0
 /// <summary>
 /// 初始化任務等待器
 /// </summary>
 /// <param name="awaitableTask"></param>
 public TaskAwaiter(AwaitableTask <TResult> awaitableTask) => _task = awaitableTask;
Exemplo n.º 4
0
 /// <summary>
 /// 任務等待器
 /// </summary>
 /// <param name="awaitableTask"></param>
 public TaskAwaiter(AwaitableTask awaitableTask) => _task = awaitableTask;