Files
UnrealEngineUWP/Engine/Source/Programs/Horde/Horde.Build/Utilities/RedisExtensions.cs
carl bystrom 8dd1868e7b Horde: Mark unawaited transaction commands as fire-and-forget
Prevents task cancellation exceptions from being thrown.
#preflight 63481139e948501224cf6013

[CL 22502870 by carl bystrom in ue5-main branch]
2022-10-13 09:26:12 -04:00

23 lines
721 B
C#

// Copyright Epic Games, Inc. All Rights Reserved.
using System.Threading.Tasks;
using StackExchange.Redis;
namespace Horde.Build.Utilities;
/// <summary>
/// Extensions for Redis classes
/// </summary>
public static class RedisExtensions
{
/// <summary>
/// Await given tasks and swallow any task cancellation exceptions.
/// Useful to do after (failing) transaction to ensure no trailing tasks are left unawaited
/// </summary>
/// <param name="transaction"></param>
/// <param name="tasks">Tasks to await</param>
public static async Task WaitAndIgnoreCancellations(this ITransaction transaction, params Task[] tasks)
{
try { await Task.WhenAll(tasks); } catch (TaskCanceledException) { /* Ignore */ }
}
}