Exemplo n.º 1
0
 public void SetResult(TResult result)
 {
     System.Threading.Tasks.Task <TResult> task = this.m_task;
     if (task == null)
     {
         this.m_task = this.GetTaskForResult(result);
     }
     else
     {
         if (AsyncCausalityTracer.LoggingOn)
         {
             AsyncCausalityTracer.TraceOperationCompletion(CausalityTraceLevel.Required, task.Id, AsyncCausalityStatus.Completed);
         }
         if (System.Threading.Tasks.Task.s_asyncDebuggingEnabled)
         {
             System.Threading.Tasks.Task.RemoveFromActiveTasks(task.Id);
         }
         if (!task.TrySetResult(result))
         {
             throw new InvalidOperationException(Environment.GetResourceString("TaskT_TransitionToFinal_AlreadyCompleted"));
         }
     }
 }