diff --git a/server/AyaNova/util/TaskUtil.cs b/server/AyaNova/util/TaskUtil.cs new file mode 100644 index 00000000..72533501 --- /dev/null +++ b/server/AyaNova/util/TaskUtil.cs @@ -0,0 +1,24 @@ +using System; +using System.Threading; +using System.Threading.Tasks; + +namespace AyaNova.Util +{ + internal static class TaskUtil + { + /// + ///Usage: + ///await WithTimeoutAfterStart(ct => SomeOperationAsync(ct), TimeSpan.FromMilliseconds(n)); + /// + public static async Task WithTimeoutAfterStart(Func operation, TimeSpan timeout) + { + //https://stackoverflow.com/a/23478628/8939 + var source = new CancellationTokenSource(); + var task = operation(source.Token); + source.CancelAfter(timeout); + await task; + } + + }//eoc + +}//eons \ No newline at end of file