Mercurial > pub > ImplabNet
view Implab/PromiseAwaiterT.cs @ 207:558f34b2fb50 v2
added Safe.DispatchEvent() a legacy equivalent for '?.Invoke()'
added Safe.Dispose(IEnumerable)
added PromiseExtensions.CancellationPoint to add a cancellation point to the chain of promises
added IPromise<T> PromiseExtensions.Then<T>(this IPromise<T> that, Action<T> success) overloads
added PromiseExtensions.Error() overloads to handle a error or(and) a cancellation
author | cin |
---|---|
date | Wed, 09 Nov 2016 12:03:22 +0300 |
parents | ec91a6dfa5b3 |
children | cbe10ac0731e |
line wrap: on
line source
using System; using System.Runtime.CompilerServices; namespace Implab { public struct PromiseAwaiter<T> : INotifyCompletion { readonly IPromise<T> m_promise; public PromiseAwaiter(IPromise<T> promise) { m_promise = promise; } public void OnCompleted (Action continuation) { if (m_promise != null) m_promise.On(continuation, PromiseEventType.All); } public T GetResult() { return m_promise.Join(); } public bool IsCompleted { get { return m_promise.IsResolved; } } } }