Mercurial > pub > ImplabNet
comparison Implab/PromiseExtensions.cs @ 101:279e226dffdd v2
code cleanup
added EnsureDispatched extension
author | cin |
---|---|
date | Thu, 06 Nov 2014 20:03:19 +0300 |
parents | c761fc982e1d |
children | 5f10d54b45df |
comparison
equal
deleted
inserted
replaced
100:673947ce458a | 101:279e226dffdd |
---|---|
10 Safe.ArgumentNotNull(that, "that"); | 10 Safe.ArgumentNotNull(that, "that"); |
11 var context = SynchronizationContext.Current; | 11 var context = SynchronizationContext.Current; |
12 if (context == null) | 12 if (context == null) |
13 return that; | 13 return that; |
14 | 14 |
15 var p = new SyncContextPromise<T>(context, that, true); | 15 var p = new SyncContextPromise<T>(context, that); |
16 | 16 |
17 that.Last( | 17 that.Last( |
18 p.Resolve, | 18 p.Resolve, |
19 p.Reject, | 19 p.Reject, |
20 p.Cancel | 20 p.Cancel |
24 | 24 |
25 public static IPromise<T> DispatchToContext<T>(this IPromise<T> that, SynchronizationContext context) { | 25 public static IPromise<T> DispatchToContext<T>(this IPromise<T> that, SynchronizationContext context) { |
26 Safe.ArgumentNotNull(that, "that"); | 26 Safe.ArgumentNotNull(that, "that"); |
27 Safe.ArgumentNotNull(context, "context"); | 27 Safe.ArgumentNotNull(context, "context"); |
28 | 28 |
29 var p = new SyncContextPromise<T>(context, that, true); | 29 var p = new SyncContextPromise<T>(context, that); |
30 | 30 |
31 that.Last( | 31 that.Last( |
32 p.Resolve, | 32 p.Resolve, |
33 p.Reject, | 33 p.Reject, |
34 p.Cancel | 34 p.Cancel |
35 ); | 35 ); |
36 return p; | 36 return p; |
37 } | |
38 | |
39 /// <summary> | |
40 /// Ensures the dispatched. | |
41 /// </summary> | |
42 /// <returns>The dispatched.</returns> | |
43 /// <param name="that">That.</param> | |
44 /// <param name="head">Head.</param> | |
45 /// <param name="cleanup">Cleanup.</param> | |
46 /// <typeparam name="TPromise">The 1st type parameter.</typeparam> | |
47 /// <typeparam name="T">The 2nd type parameter.</typeparam> | |
48 public static TPromise EnsureDispatched<TPromise,T>(this TPromise that, IPromise<T> head, Action<T> cleanup) where TPromise : IPromise{ | |
49 Safe.ArgumentNotNull(that, "that"); | |
50 Safe.ArgumentNotNull(head, "head"); | |
51 | |
52 that.Last(null,null,() => head.Last(cleanup)); | |
53 | |
54 return that; | |
37 } | 55 } |
38 | 56 |
39 public static AsyncCallback AsyncCallback<T>(this Promise<T> that, Func<IAsyncResult,T> callback) { | 57 public static AsyncCallback AsyncCallback<T>(this Promise<T> that, Func<IAsyncResult,T> callback) { |
40 Safe.ArgumentNotNull(that, "that"); | 58 Safe.ArgumentNotNull(that, "that"); |
41 Safe.ArgumentNotNull(callback, "callback"); | 59 Safe.ArgumentNotNull(callback, "callback"); |