PromiseHelper.cs
40 lines
| 1.1 KiB
| text/x-csharp
|
CSharpLexer
|
|
r289 | 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); | ||||
| }); | ||||
| } | ||||
| } | ||||
| } | ||||
