Mercurial > pub > ImplabNet
annotate Implab/ActionTaskT.cs @ 238:bdfdba6b645b v2
fixed unpredictable Safe.Dispose behaviour
| author | cin |
|---|---|
| date | Fri, 01 Dec 2017 01:28:56 +0300 |
| parents | 40d7fed4a09e |
| children |
| rev | line source |
|---|---|
| 145 | 1 using System; |
| 2 | |
| 3 namespace Implab { | |
| 4 public class ActionTask<T> : ActionTaskBase, IDeferred<T> { | |
| 5 readonly Action<T> m_task; | |
| 149 | 6 public ActionTask(Action<T> task, Action<Exception> error, Action<Exception> cancel, bool autoCancellable) : base(error,cancel, autoCancellable) { |
| 145 | 7 m_task = task; |
| 8 } | |
| 9 | |
| 10 public void Resolve(T value) { | |
| 11 if (m_task != null && LockCancelation()) { | |
| 12 try { | |
| 13 m_task(value); | |
| 14 SetResult(); | |
| 15 } catch(Exception err) { | |
|
196
40d7fed4a09e
fixed promise chaining behavior, the error handler doesn't handle result or cancellation handlers exceptions these exceptions are propagated to the next handlers.
cin
parents:
187
diff
changeset
|
16 SetErrorInternal(err); |
| 145 | 17 } |
| 18 } | |
| 19 } | |
| 20 } | |
| 21 } | |
| 22 |
