| File: Types\Shared\Utils.shared.cs | Web Access |
| Project: src\src\Essentials\src\Essentials.csproj (Microsoft.Maui.Essentials) |
using System; using System.Text; using System.Threading; using System.Threading.Tasks; namespace Microsoft.Maui.ApplicationModel { static class Utils { internal static Version ParseVersion(string version) { if (Version.TryParse(version, out var number)) return number; if (int.TryParse(version, out var major)) return new Version(major, 0); return new Version(0, 0); } internal static CancellationToken TimeoutToken(CancellationToken cancellationToken, TimeSpan timeout) { // create a new linked cancellation token source var cancelTokenSrc = CancellationTokenSource.CreateLinkedTokenSource(cancellationToken); // if a timeout was given, make the token source cancel after it expires if (timeout > TimeSpan.Zero) cancelTokenSrc.CancelAfter(timeout); // our Cancel method will handle the actual cancellation logic return cancelTokenSrc.Token; } internal static async Task<T> WithTimeout<T>(Task<T> task, TimeSpan timeSpan) { var retTask = await Task.WhenAny(task, Task.Delay(timeSpan)) .ConfigureAwait(false); return retTask is Task<T> ? task.Result : default(T); } } }