// 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; }
// 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); }
// http://msdn.microsoft.com/en-us/library/system.threading.tasks.task.getawaiter.aspx // !supported in: 4.5 public __TaskAwaiter GetAwaiter() { //Console.WriteLine("__Task.GetAwaiter"); // see also: X:\jsc.svn\examples\javascript\forms\FormsAsyncButtonExperiment\FormsAsyncButtonExperiment\ApplicationControl.cs var awaiter = new __TaskAwaiter { InternalIsCompleted = () => this.IsCompleted, }; this.InternalYield += delegate { //Console.WriteLine("__Task.GetAwaiter InternalYield"); if (awaiter.InternalOnCompleted != null) awaiter.InternalOnCompleted(); }; return awaiter; }