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")); } } }