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");