##// END OF EJS Templates
RC: cancellation support for promises + tests
RC: cancellation support for promises + tests

File last commit:

r145:706fccb85524 v2
r145:706fccb85524 v2
Show More
ControlBoundPromise.cs
38 lines | 1.3 KiB | text/x-csharp | CSharpLexer
/ Implab.Fx / ControlBoundPromise.cs
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;
}
protected override void SignalSuccess(Promise<T>.HandlerDescriptor handler) {
if (m_target.InvokeRequired)
m_target.BeginInvoke(new Action<Promise<T>.HandlerDescriptor>(base.SignalSuccess), handler);
else
base.SignalSuccess(handler);
}
protected override void SignalCancelled(Promise<T>.HandlerDescriptor handler, Exception reason) {
if (m_target.InvokeRequired)
m_target.BeginInvoke(new Action<Promise<T>.HandlerDescriptor,Exception>(base.SignalCancelled), handler, reason);
else
base.SignalCancelled(handler, reason);
}
protected override void SignalError(Promise<T>.HandlerDescriptor handler, Exception error) {
if (m_target.InvokeRequired)
m_target.BeginInvoke(new Action<Promise<T>.HandlerDescriptor,Exception>(base.SignalError), handler, error);
else
base.SignalError(handler, error);
}
}
}