Mercurial > pub > ImplabNet
diff Implab/Safe.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 | 8200ab154c8a |
children | a867536c68fc |
line wrap: on
line diff
--- a/Implab/Safe.cs Tue Oct 25 17:40:45 2016 +0300 +++ b/Implab/Safe.cs Wed Nov 09 12:03:22 2016 +0300 @@ -4,6 +4,7 @@ using System.Text; using System.Text.RegularExpressions; using System.Diagnostics; +using System.Collections; namespace Implab { @@ -60,12 +61,28 @@ } } + public static void Dispose(IEnumerable<IDisposable> objects) { + foreach (var d in objects) + if (d != null) + d.Dispose(); + } + public static void Dispose(object obj) { var d = obj as IDisposable; if (d != null) d.Dispose(); } + public static void DispatchEvent<T>(this EventHandler<T> handler, object sender, T args) { + if (handler != null) + handler(sender, args); + } + + public static void DispatchEvent(this EventHandler handler, object sender, EventArgs args) { + if (handler != null) + handler(sender, args); + } + [DebuggerStepThrough] public static IPromise<T> Run<T>(Func<T> action) { ArgumentNotNull(action, "action");