Mercurial > pub > ImplabNet
comparison Implab/AbstractPromise.cs @ 130:671f60cd0250 v2
fixed Resove method bug when calling it on already cancelled promise
author | cin |
---|---|
date | Fri, 30 Jan 2015 17:07:17 +0300 |
parents | f803565868a4 |
children | f75cfa58e3d4 |
comparison
equal
deleted
inserted
replaced
129:471f596b2603 | 130:671f60cd0250 |
---|---|
37 while (m_state == TRANSITIONAL_STATE) { | 37 while (m_state == TRANSITIONAL_STATE) { |
38 Thread.MemoryBarrier(); | 38 Thread.MemoryBarrier(); |
39 } | 39 } |
40 } | 40 } |
41 | 41 |
42 protected void BeginSetResult() { | 42 protected bool BeginSetResult() { |
43 if (!BeginTransit()) { | 43 if (!BeginTransit()) { |
44 WaitTransition(); | 44 WaitTransition(); |
45 if (m_state != CANCELLED_STATE) | 45 if (m_state != CANCELLED_STATE) |
46 throw new InvalidOperationException("The promise is already resolved"); | 46 throw new InvalidOperationException("The promise is already resolved"); |
47 } | 47 return false; |
48 } | |
49 return true; | |
48 } | 50 } |
49 | 51 |
50 protected void EndSetResult() { | 52 protected void EndSetResult() { |
51 CompleteTransit(SUCCEEDED_STATE); | 53 CompleteTransit(SUCCEEDED_STATE); |
52 OnSuccess(); | 54 OnSuccess(); |