DotNext by Roman Sakno

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

 ActionFuture<T1, T2, T3>

sealed class ActionFuture<T1, T2, T3> : AsyncDelegateFuture<Action<T1, T2, T3>>
using System; using System.Threading; namespace DotNext.Runtime.CompilerServices { internal sealed class ActionFuture<T1, T2, T3> : AsyncDelegateFuture<Action<T1, T2, T3>> { private readonly T1 arg1; private readonly T2 arg2; private readonly T3 arg3; internal ActionFuture(T1 arg1, T2 arg2, T3 arg3, CancellationToken token) : base(token) { this.arg1 = arg1; this.arg2 = arg2; this.arg3 = arg3; } private protected override void InvokeOne(Action<T1, T2, T3> handler) { handler(arg1, arg2, arg3); } } }