##// END OF EJS Templates
added ICancellable.Cancel(Exception) to allow specify the reason of cancellation
added ICancellable.Cancel(Exception) to allow specify the reason of cancellation

File last commit:

r138:f75cfa58e3d4 v2
r138:f75cfa58e3d4 v2
Show More
ControlBoundPromise.cs
38 lines | 1.2 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(IDeferred<T> handler) {
if (m_target.InvokeRequired)
m_target.BeginInvoke(new Action<IDeferred<T>>(base.SignalSuccess), handler);
else
base.SignalSuccess(handler);
}
protected override void SignalCancelled(IDeferred<T> handler, Exception reason) {
if (m_target.InvokeRequired)
m_target.BeginInvoke(new Action<IDeferred<T>,Exception>(base.SignalCancelled), handler, reason);
else
base.SignalCancelled(handler, reason);
}
protected override void SignalError(IDeferred<T> handler, Exception error) {
if (m_target.InvokeRequired)
m_target.BeginInvoke(new Action<IDeferred<T>,Exception>(base.SignalError), handler, error);
else
base.SignalError(handler, error);
}
}
}