| @@ -72,6 +72,23 namespace Implab { | |||||
| 72 | } |  | 72 | } | |
| 73 | }; |  | 73 | }; | |
| 74 | } |  | 74 | } | |
|  | 75 | ||||
|  | 76 | static void CancelCallback(object cookie) { | |||
|  | 77 | ((ICancellable)cookie).Cancel(); | |||
|  | 78 | } | |||
|  | 79 | ||||
|  | 80 | /// <summary> | |||
|  | 81 | /// Cancells promise after the specified timeout is elapsed. | |||
|  | 82 | /// </summary> | |||
|  | 83 | /// <param name="that">The promise to cancel on timeout.</param> | |||
|  | 84 | /// <param name="milliseconds">The timeout in milliseconds.</param> | |||
|  | 85 | /// <typeparam name="TPromise">The 1st type parameter.</typeparam> | |||
|  | 86 | public static TPromise Timeout<TPromise>(this TPromise that, int milliseconds) where TPromise : IPromise { | |||
|  | 87 | Safe.ArgumentNotNull(that, "that"); | |||
|  | 88 | var timer = new Timer(CancelCallback, that, milliseconds, -1); | |||
|  | 89 | that.On(timer.Dispose, PromiseEventType.All); | |||
|  | 90 | return that; | |||
|  | 91 | } | |||
| 75 |  | 92 | |||
| 76 | #if NET_4_5 |  | 93 | #if NET_4_5 | |
| 77 |  | 94 | |||
        
        General Comments 0
    
    
  
  
                      You need to be logged in to leave comments.
                      Login now
                    
                