ControlBoundPromise.cs
38 lines
| 1.3 KiB
| text/x-csharp
|
CSharpLexer
/ Implab.Fx / ControlBoundPromise.cs
|
|
r72 | using System.Windows.Forms; | ||
| using System; | ||||
| namespace Implab.Fx { | ||||
| public class ControlBoundPromise<T> : Promise<T> { | ||||
| readonly Control m_target; | ||||
| public ControlBoundPromise(Control target) { | ||||
| Safe.ArgumentNotNull(target, "target"); | ||||
| m_target = target; | ||||
| } | ||||
|
|
r145 | protected override void SignalSuccess(Promise<T>.HandlerDescriptor handler) { | ||
|
|
r119 | if (m_target.InvokeRequired) | ||
|
|
r145 | m_target.BeginInvoke(new Action<Promise<T>.HandlerDescriptor>(base.SignalSuccess), handler); | ||
|
|
r119 | else | ||
| base.SignalSuccess(handler); | ||||
|
|
r72 | } | ||
|
|
r145 | protected override void SignalCancelled(Promise<T>.HandlerDescriptor handler, Exception reason) { | ||
|
|
r72 | if (m_target.InvokeRequired) | ||
|
|
r145 | m_target.BeginInvoke(new Action<Promise<T>.HandlerDescriptor,Exception>(base.SignalCancelled), handler, reason); | ||
|
|
r72 | else | ||
|
|
r138 | base.SignalCancelled(handler, reason); | ||
|
|
r72 | } | ||
|
|
r119 | |||
|
|
r145 | protected override void SignalError(Promise<T>.HandlerDescriptor handler, Exception error) { | ||
|
|
r119 | if (m_target.InvokeRequired) | ||
|
|
r145 | m_target.BeginInvoke(new Action<Promise<T>.HandlerDescriptor,Exception>(base.SignalError), handler, error); | ||
|
|
r119 | else | ||
| base.SignalError(handler, error); | ||||
| } | ||||
|
|
r72 | } | ||
| } | ||||
