e2etest/GuestProxyAgentTest/Extensions/TaskExtensions.cs (22 lines of code) (raw):
// Copyright (c) Microsoft Corporation
// SPDX-License-Identifier: MIT
namespace GuestProxyAgentTest.Extensions
{
public static class TaskExtensions
{
public static async Task TimeoutAfter(this Task task, int timeoutMilliSeconds, CancellationTokenSource cancellationTokenSource = null!)
{
if (task == await Task.WhenAny(task, Task.Delay(timeoutMilliSeconds)))
{
await task;
}
else
{
if (cancellationTokenSource != null)
{
// Cancel the task
cancellationTokenSource.Cancel();
}
throw new TimeoutException("task time out.");
}
}
}
}