DotNext by Roman Sakno

<PackageReference Include="DotNext" Version="2.9.5" />

 ActionFuture<T1, T2>

sealed class ActionFuture<T1, T2> : AsyncDelegateFuture<Action<T1, T2>>
using System; using System.Runtime.CompilerServices; using System.Threading; namespace DotNext.Runtime.CompilerServices { [System.Runtime.CompilerServices.NullableContext(1)] [System.Runtime.CompilerServices.Nullable(new byte[] { 0, 1, 1, 1 })] internal sealed class ActionFuture<[System.Runtime.CompilerServices.Nullable(2)] T1, [System.Runtime.CompilerServices.Nullable(2)] T2> : AsyncDelegateFuture<Action<T1, T2>> { private readonly T1 arg1; private readonly T2 arg2; internal ActionFuture(T1 arg1, T2 arg2, CancellationToken token) : base(token) { this.arg1 = arg1; this.arg2 = arg2; } private protected override void InvokeOne(Action<T1, T2> handler) { handler(arg1, arg2); } } }