##// END OF EJS Templates
rewritten tracing
rewritten tracing

File last commit:

r76:c761fc982e1d v2
r92:4c0e5ef99986 v2
Show More
PromiseHelpers.cs
41 lines | 1.7 KiB | text/x-csharp | CSharpLexer
using System;
using System.Windows.Forms;
using System.Threading;
namespace Implab.Fx
{
public static class PromiseHelpers
{
/// <summary>
/// Перенаправляет обработку обещания в поток указанного элемента управления.
/// </summary>
/// <typeparam name="T">Тип результата обещания</typeparam>
/// <param name="that">Исходное обещание</param>
/// <param name="ctl">Элемент управления</param>
/// <returns>Новое обещание, обработчики которого будут выполнены в потоке элемента управления.</returns>
/// <exception cref="ArgumentNullException">Параметр не может быть <c>null</c>.</exception>
/// <example>
/// client
/// .Get("description.txt") // returns a promise
/// .DispatchToControl(m_ctl) // handle the promise in the thread of the control
/// .Then(
/// description => m_ctl.Text = description // now it's safe
/// )
/// </example>
public static IPromise<T> DispatchToControl<T>(this IPromise<T> that, Control ctl)
{
Safe.ArgumentNotNull(that, "that");
Safe.ArgumentNotNull(ctl, "ctl");
var directed = new ControlBoundPromise<T>(ctl,that,true);
that.Last(
directed.Resolve,
directed.Reject,
directed.Cancel
);
return directed;
}
}
}