<PackageReference Include="System.Reactive" Version="4.3.2" />

TaskExtensions

static class TaskExtensions
namespace System.Threading.Tasks { internal static class TaskExtensions { public static Task ContinueWithState<TState>(this Task task, Action<Task, TState> continuationAction, TState state) { return task.ContinueWith(delegate(Task t, object tupleObject) { (Action<Task, TState>, TState) obj = ((Action<Task, TState>, TState))tupleObject; Action<Task, TState> item = obj.Item1; TState item2 = obj.Item2; item(t, item2); }, (continuationAction, state)); } public static Task ContinueWithState<TState>(this Task task, Action<Task, TState> continuationAction, TState state, CancellationToken cancellationToken) { return task.ContinueWith(delegate(Task t, object tupleObject) { (Action<Task, TState>, TState) obj = ((Action<Task, TState>, TState))tupleObject; Action<Task, TState> item = obj.Item1; TState item2 = obj.Item2; item(t, item2); }, (continuationAction, state), cancellationToken); } public static Task ContinueWithState<TState>(this Task task, Action<Task, TState> continuationAction, TState state, TaskContinuationOptions continuationOptions) { return task.ContinueWith(delegate(Task t, object tupleObject) { (Action<Task, TState>, TState) obj = ((Action<Task, TState>, TState))tupleObject; Action<Task, TState> item = obj.Item1; TState item2 = obj.Item2; item(t, item2); }, (continuationAction, state), continuationOptions); } public static Task ContinueWithState<TState>(this Task task, Action<Task, TState> continuationAction, TState state, CancellationToken cancellationToken, TaskContinuationOptions continuationOptions) { return task.ContinueWith(delegate(Task t, object tupleObject) { (Action<Task, TState>, TState) obj = ((Action<Task, TState>, TState))tupleObject; Action<Task, TState> item = obj.Item1; TState item2 = obj.Item2; item(t, item2); }, (continuationAction, state), cancellationToken, continuationOptions, TaskScheduler.Default); } public static Task ContinueWithState<TResult, TState>(this Task<TResult> task, Action<Task<TResult>, TState> continuationAction, TState state) { return task.ContinueWith((Action<Task<TResult>, object>)delegate(Task<TResult> t, object tupleObject) { (Action<Task<TResult>, TState>, TState) obj = ((Action<Task<TResult>, TState>, TState))tupleObject; Action<Task<TResult>, TState> item = obj.Item1; TState item2 = obj.Item2; item(t, item2); }, (object)(continuationAction, state)); } public static Task ContinueWithState<TResult, TState>(this Task<TResult> task, Action<Task<TResult>, TState> continuationAction, TState state, CancellationToken cancellationToken) { return task.ContinueWith((Action<Task<TResult>, object>)delegate(Task<TResult> t, object tupleObject) { (Action<Task<TResult>, TState>, TState) obj = ((Action<Task<TResult>, TState>, TState))tupleObject; Action<Task<TResult>, TState> item = obj.Item1; TState item2 = obj.Item2; item(t, item2); }, (object)(continuationAction, state), cancellationToken); } public static Task ContinueWithState<TResult, TState>(this Task<TResult> task, Action<Task<TResult>, TState> continuationAction, TState state, TaskContinuationOptions continuationOptions) { return task.ContinueWith((Action<Task<TResult>, object>)delegate(Task<TResult> t, object tupleObject) { (Action<Task<TResult>, TState>, TState) obj = ((Action<Task<TResult>, TState>, TState))tupleObject; Action<Task<TResult>, TState> item = obj.Item1; TState item2 = obj.Item2; item(t, item2); }, (object)(continuationAction, state), continuationOptions); } public static Task ContinueWithState<TResult, TState>(this Task<TResult> task, Action<Task<TResult>, TState> continuationAction, TState state, CancellationToken cancellationToken, TaskContinuationOptions continuationOptions) { return task.ContinueWith((Action<Task<TResult>, object>)delegate(Task<TResult> t, object tupleObject) { (Action<Task<TResult>, TState>, TState) obj = ((Action<Task<TResult>, TState>, TState))tupleObject; Action<Task<TResult>, TState> item = obj.Item1; TState item2 = obj.Item2; item(t, item2); }, (object)(continuationAction, state), cancellationToken, continuationOptions, TaskScheduler.Default); } } }