| 12345678910111213141516171819202122232425262728293031323334353637 | using System;using System.Collections;using System.Runtime.CompilerServices;using System.Threading;namespace UnityAsync.Awaiters{	public struct IEnumeratorAwaiter : INotifyCompletion	{		static readonly SendOrPostCallback postCallback = state => ((Action)state)();		readonly IEnumerator coroutine;		public IEnumeratorAwaiter(IEnumerator coroutine)		{			this.coroutine = coroutine;		}		public void OnCompleted(Action continuation)		{			if(AsyncManager.InUnityContext)				AsyncManager.StartCoroutine(ContinuationCoroutine(continuation));			else				AsyncManager.UnitySyncContext.Post(postCallback, AsyncManager.StartCoroutine(ContinuationCoroutine(continuation)));		}		IEnumerator ContinuationCoroutine(Action continuation)		{			yield return AsyncManager.StartCoroutine(coroutine);			continuation();		}		public bool IsCompleted => false;		public void GetResult() { }	}}
 |