/// <summary> /// Initializes a new instance of the <see cref="ConfiguredTaskAwaiter"/> struct. /// </summary> internal ConfiguredTaskAwaiter(TaskController taskController, SystemTasks.Task awaitedTask, bool continueOnCapturedContext) { this.TaskController = taskController; this.AwaitedTask = awaitedTask; this.Awaiter = awaitedTask.ConfigureAwait(continueOnCapturedContext).GetAwaiter(); }
/// <summary> /// Initializes a new instance of the <see cref="ConfiguredTaskAwaiter"/> struct. /// </summary> internal ConfiguredTaskAwaiter(CoyoteRuntime runtime, SystemTasks.Task awaitedTask, bool continueOnCapturedContext) { this.Runtime = runtime; this.AwaitedTask = awaitedTask; this.Awaiter = awaitedTask.ConfigureAwait(continueOnCapturedContext).GetAwaiter(); }
/// <summary> /// Initializes a new instance of the <see cref="ConfiguredTaskAwaiter"/> struct. /// </summary> internal ConfiguredTaskAwaiter(Task awaitedTask, bool continueOnCapturedContext) { if (SynchronizationContext.Current is ControlledSynchronizationContext) { // Force the continuation to run on the current context so that it can be controlled. continueOnCapturedContext = true; } this.AwaitedTask = awaitedTask; this.Awaiter = awaitedTask.ConfigureAwait(continueOnCapturedContext).GetAwaiter(); }
/// <summary> /// Initializes a new instance of the <see cref="ConfiguredTaskAwaiter"/> struct. /// </summary> internal ConfiguredTaskAwaiter(SystemTask awaitedTask, bool continueOnCapturedContext) { if (RuntimeProvider.TryGetFromSynchronizationContext(out CoyoteRuntime runtime)) { // Force the continuation to run on the current context so that it can be controlled. continueOnCapturedContext = true; } this.AwaitedTask = awaitedTask; this.Awaiter = awaitedTask.ConfigureAwait(continueOnCapturedContext).GetAwaiter(); this.Runtime = runtime; }
/// <summary> /// Initializes a new instance of the <see cref="ConfiguredTaskAwaiter"/> struct. /// </summary> internal ConfiguredTaskAwaiter(CoyoteRuntime runtime, SystemTasks.Task awaitedTask, bool continueOnCapturedContext) { if (runtime?.SchedulingPolicy != SchedulingPolicy.None) { // Force the continuation to run on the current context so that it can be controlled. continueOnCapturedContext = true; } this.Runtime = runtime; this.AwaitedTask = awaitedTask; this.Awaiter = awaitedTask.ConfigureAwait(continueOnCapturedContext).GetAwaiter(); }
static void WriteBackInstance(ILRuntime.Runtime.Enviorment.AppDomain __domain, StackObject *ptr_of_this_method, IList <object> __mStack, ref System.Runtime.CompilerServices.ConfiguredTaskAwaitable.ConfiguredTaskAwaiter instance_of_this_method) { ptr_of_this_method = ILIntepreter.GetObjectAndResolveReference(ptr_of_this_method); switch (ptr_of_this_method->ObjectType) { case ObjectTypes.Object: { __mStack[ptr_of_this_method->Value] = instance_of_this_method; } break; case ObjectTypes.FieldReference: { var ___obj = __mStack[ptr_of_this_method->Value]; if (___obj is ILTypeInstance) { ((ILTypeInstance)___obj)[ptr_of_this_method->ValueLow] = instance_of_this_method; } else { var t = __domain.GetType(___obj.GetType()) as CLRType; t.SetFieldValue(ptr_of_this_method->ValueLow, ref ___obj, instance_of_this_method); } } break; case ObjectTypes.StaticFieldReference: { var t = __domain.GetType(ptr_of_this_method->Value); if (t is ILType) { ((ILType)t).StaticInstance[ptr_of_this_method->ValueLow] = instance_of_this_method; } else { ((CLRType)t).SetStaticFieldValue(ptr_of_this_method->ValueLow, instance_of_this_method); } } break; case ObjectTypes.ArrayReference: { var instance_of_arrayReference = __mStack[ptr_of_this_method->Value] as System.Runtime.CompilerServices.ConfiguredTaskAwaitable.ConfiguredTaskAwaiter[]; instance_of_arrayReference[ptr_of_this_method->ValueLow] = instance_of_this_method; } break; } }
static StackObject *get_IsCompleted_0(ILIntepreter __intp, StackObject *__esp, IList <object> __mStack, CLRMethod __method, bool isNewObj) { ILRuntime.Runtime.Enviorment.AppDomain __domain = __intp.AppDomain; StackObject *ptr_of_this_method; StackObject *__ret = ILIntepreter.Minus(__esp, 1); ptr_of_this_method = ILIntepreter.Minus(__esp, 1); ptr_of_this_method = ILIntepreter.GetObjectAndResolveReference(ptr_of_this_method); System.Runtime.CompilerServices.ConfiguredTaskAwaitable.ConfiguredTaskAwaiter instance_of_this_method = (System.Runtime.CompilerServices.ConfiguredTaskAwaitable.ConfiguredTaskAwaiter) typeof(System.Runtime.CompilerServices.ConfiguredTaskAwaitable.ConfiguredTaskAwaiter).CheckCLRTypes(StackObject.ToObject(ptr_of_this_method, __domain, __mStack)); var result_of_this_method = instance_of_this_method.IsCompleted; ptr_of_this_method = ILIntepreter.Minus(__esp, 1); WriteBackInstance(__domain, ptr_of_this_method, __mStack, ref instance_of_this_method); __intp.Free(ptr_of_this_method); __ret->ObjectType = ObjectTypes.Integer; __ret->Value = result_of_this_method ? 1 : 0; return(__ret + 1); }