internal ConfiguredTaskAwaiter(Task <TResult> task, bool continueOnSourceContext, InstanceReference instanceReference) { this.task = task; this.continueOnSourceContext = continueOnSourceContext; this.instanceReference = instanceReference; this.thisSetter = null; }
public SynchronizationContextContinuation(Action action, SynchronizationContext ctx, InstanceReference instanceReference, IAsyncSetThis thisSetter) { this.action = action; this.ctx = ctx; this.instanceReference = instanceReference; this.thisSetter = thisSetter; }
internal static void HandleOnCompleted (Task task, Action continuation, bool continueOnSourceContext, InstanceReference instanceReference, IAsyncSetThis thisSetter) { if (continueOnSourceContext && SynchronizationContext.Current != null) { task.ContinueWith(new SynchronizationContextContinuation(continuation, SynchronizationContext.Current, instanceReference, thisSetter)); } else { task.ContinueWith (new ActionContinuation (continuation)); } }
internal ConfiguredTaskAwaiter(Task task, bool continueOnSourceContext, InstanceReference instanceReference) { this.task = task; this.continueOnSourceContext = continueOnSourceContext; this.instanceReference = instanceReference; this.thisSetter = null; if (instanceReference != null) { if (InstanceSynchronizationContext.GetRegisteredActivity(instanceReference) == null) { throw new TaskSchedulerException("ConfiguredTaskAwaiter called while static SynchronizationContext.SetSynchronizationContext(...) is not called."); } } }
void IAsyncSetThisSetter.SetThisSetter(IAsyncSetThis thisSetter) { this.thisSetter = thisSetter; }
internal static void HandleOnCompleted(Task task, Action continuation, bool continueOnSourceContext, InstanceReference instanceReference, IAsyncSetThis thisSetter) { if (continueOnSourceContext && SynchronizationContext.Current != null) { task.ContinueWith(new SynchronizationContextContinuation(continuation, SynchronizationContext.Current, instanceReference, thisSetter)); } else { task.ContinueWith(new ActionContinuation(continuation)); } }