示例#1
0
        // http://msdn.microsoft.com/en-us/library/system.threading.tasks.task.getawaiter.aspx
        // !supported in: 4.5
        public __TaskAwaiter GetAwaiter()
        {
            //Console.WriteLine("enter __Task.GetAwaiter");

            // see also: X:\jsc.svn\examples\javascript\forms\FormsAsyncButtonExperiment\FormsAsyncButtonExperiment\ApplicationControl.cs

            var awaiter = new __TaskAwaiter
            {
                InternalIsCompleted = () => this.IsCompleted,
            };

            // ?
            this.ContinueWith(
                delegate
            {
                //Console.WriteLine("continue __Task.GetAwaiter InternalOnCompleted");

                if (awaiter.InternalOnCompleted != null)
                {
                    awaiter.InternalOnCompleted();
                }
            }
                );

            //Console.WriteLine("exit __Task.GetAwaiter");

            return(awaiter);
        }
示例#2
0
        // http://msdn.microsoft.com/en-us/library/system.threading.tasks.task.getawaiter.aspx
        // !supported in: 4.5
        public __TaskAwaiter GetAwaiter()
        {
            //Console.WriteLine("enter __Task.GetAwaiter");

            // see also: X:\jsc.svn\examples\javascript\forms\FormsAsyncButtonExperiment\FormsAsyncButtonExperiment\ApplicationControl.cs

            var awaiter = new __TaskAwaiter
            {
                InternalIsCompleted = () => this.IsCompleted,
            };

            // ?
            this.ContinueWith(
                delegate
                {
                    //Console.WriteLine("continue __Task.GetAwaiter InternalOnCompleted");

                    if (awaiter.InternalOnCompleted != null)
                        awaiter.InternalOnCompleted();
                }
            );

            //Console.WriteLine("exit __Task.GetAwaiter");

            return awaiter;
        }
        // https://web.archive.org/web/20140227023659/http://blog.dot42.com/2013/08/how-we-implemented-asyncawait.html

        // http://msdn.microsoft.com/en-us/library/system.threading.tasks.task.getawaiter.aspx
        // !supported in: 4.5
        public __TaskAwaiter GetAwaiter()
        {
            //Console.WriteLine("__Task.GetAwaiter");


            var awaiter = new __TaskAwaiter
            {
                InternalIsCompleted = () => this.IsCompleted,
            };

            InvokeWhenComplete(
                delegate
                {
                    //Console.WriteLine("__Task.GetAwaiter InternalYield");

                    if (awaiter.InternalOnCompleted != null)
                        awaiter.InternalOnCompleted();
                }
             );

            return awaiter;
        }
示例#4
0
        // http://msdn.microsoft.com/en-us/library/system.threading.tasks.task.getawaiter.aspx
        // !supported in: 4.5
        public __TaskAwaiter GetAwaiter()
        {
            //Console.WriteLine("__Task.GetAwaiter");


            var awaiter = new __TaskAwaiter
            {
                InternalIsCompleted = () => this.IsCompleted,
            };

            InvokeWhenComplete(
                delegate
            {
                //Console.WriteLine("__Task.GetAwaiter InternalYield");

                if (awaiter.InternalOnCompleted != null)
                {
                    awaiter.InternalOnCompleted();
                }
            }
                );

            return(awaiter);
        }