using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading; using System.Threading.Tasks; namespace Ips.Library.Basic { public static class CancellationTokenExtensions { public static CancellationToken LinkTimeout(this CancellationToken token, int timeout) { if (timeout <= 0) return token; var cts = new CancellationTokenSource(); cts.CancelAfter(timeout * 1000); var timeoutToken = cts.Token; var linkedCts = CancellationTokenSource.CreateLinkedTokenSource(timeoutToken, token); return linkedCts.Token; } } }