コード例 #1
0
 /// <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();
 }
コード例 #2
0
 /// <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();
 }
コード例 #3
0
            /// <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();
            }
コード例 #4
0
            /// <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;
            }
コード例 #5
0
            /// <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();
            }
コード例 #6
0
        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;
            }
        }
コード例 #7
0
        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);
        }