view Implab.Test/PromiseHelper.cs @ 280:f07be402ab02 v3

Added Trace<T>.Debug(...) method for debug messages Added ContainerBuilde.LoadConfig(Uri) method
author cin
date Fri, 25 May 2018 19:15:26 +0300
parents d82909310094
children
line wrap: on
line source

using Implab;
using System;
using System.Threading;

namespace Implab.Test {
    static class PromiseHelper {
        public static IPromise<T> Sleep<T>(int timeout, T retVal, CancellationToken ct = default(CancellationToken)) {

            Timer timer = null;

            return Promise.Create<T>((d) => {
                timer = new Timer(x => {
                    d.Resolve(retVal);
                }, null, timeout, Timeout.Infinite);

                if(ct.CanBeCanceled)
                    ct.Register(d.Cancel);

            }).Finally(() => {
                Safe.Dispose(timer);
            });
        }

        public static IPromise Sleep(int timeout, CancellationToken ct = default(CancellationToken)) {
            Timer timer = null;

            return Promise.Create((d) => {
                timer = new Timer(x => {
                    d.Resolve();
                }, null, timeout, Timeout.Infinite);

                if(ct.CanBeCanceled)
                    ct.Register(d.Cancel);

            }).Finally(() => {
                Safe.Dispose(timer);
            });
        }
    }
}