Mercurial > pub > ImplabNet
annotate Implab.Fx/ControlBoundPromise.cs @ 148:e6d4b41f0101 v2
fixed timeout handling in promises
author | cin |
---|---|
date | Wed, 15 Apr 2015 07:30:20 +0300 |
parents | 706fccb85524 |
children | 97fbbf816844 |
rev | line source |
---|---|
72 | 1 using System.Windows.Forms; |
2 using System; | |
3 | |
4 | |
5 namespace Implab.Fx { | |
6 public class ControlBoundPromise<T> : Promise<T> { | |
7 readonly Control m_target; | |
8 | |
9 public ControlBoundPromise(Control target) { | |
10 Safe.ArgumentNotNull(target, "target"); | |
11 | |
12 m_target = target; | |
13 } | |
14 | |
145 | 15 protected override void SignalSuccess(Promise<T>.HandlerDescriptor handler) { |
119
2573b562e328
Promises rewritten, added improved version of AsyncQueue
cin
parents:
106
diff
changeset
|
16 if (m_target.InvokeRequired) |
145 | 17 m_target.BeginInvoke(new Action<Promise<T>.HandlerDescriptor>(base.SignalSuccess), handler); |
119
2573b562e328
Promises rewritten, added improved version of AsyncQueue
cin
parents:
106
diff
changeset
|
18 else |
2573b562e328
Promises rewritten, added improved version of AsyncQueue
cin
parents:
106
diff
changeset
|
19 base.SignalSuccess(handler); |
72 | 20 } |
21 | |
145 | 22 protected override void SignalCancelled(Promise<T>.HandlerDescriptor handler, Exception reason) { |
72 | 23 if (m_target.InvokeRequired) |
145 | 24 m_target.BeginInvoke(new Action<Promise<T>.HandlerDescriptor,Exception>(base.SignalCancelled), handler, reason); |
72 | 25 else |
138
f75cfa58e3d4
added ICancellable.Cancel(Exception) to allow specify the reason of cancellation
cin
parents:
119
diff
changeset
|
26 base.SignalCancelled(handler, reason); |
72 | 27 } |
119
2573b562e328
Promises rewritten, added improved version of AsyncQueue
cin
parents:
106
diff
changeset
|
28 |
145 | 29 protected override void SignalError(Promise<T>.HandlerDescriptor handler, Exception error) { |
119
2573b562e328
Promises rewritten, added improved version of AsyncQueue
cin
parents:
106
diff
changeset
|
30 if (m_target.InvokeRequired) |
145 | 31 m_target.BeginInvoke(new Action<Promise<T>.HandlerDescriptor,Exception>(base.SignalError), handler, error); |
119
2573b562e328
Promises rewritten, added improved version of AsyncQueue
cin
parents:
106
diff
changeset
|
32 else |
2573b562e328
Promises rewritten, added improved version of AsyncQueue
cin
parents:
106
diff
changeset
|
33 base.SignalError(handler, error); |
2573b562e328
Promises rewritten, added improved version of AsyncQueue
cin
parents:
106
diff
changeset
|
34 } |
2573b562e328
Promises rewritten, added improved version of AsyncQueue
cin
parents:
106
diff
changeset
|
35 |
72 | 36 } |
37 } | |
38 |