public static async Task Reuse() { var source = new ValueTaskCompletionSource <int>(); source.Reset(); var task = source.CreateTask(InfiniteTimeSpan, default); True(source.TrySetResult(42)); Equal(42, await task); source.Reset(); task = source.CreateTask(InfiniteTimeSpan, default); True(source.TrySetResult(43)); Equal(43, await task); }
public static async Task CompleteWithToken() { var source = new ValueTaskCompletionSource <int>(); var completionToken = source.Reset(); var task = source.CreateTask(InfiniteTimeSpan, default); False(source.TrySetResult(short.MaxValue, 42)); False(task.IsCompleted); True(source.TrySetResult(completionToken, 42)); Equal(42, await task); }
public static async Task AsyncCompletion() { var source = new ValueTaskCompletionSource <int>(); source.Reset(); var task = source.CreateTask(InfiniteTimeSpan, default); var result = Task.Run(async() => await task); await Task.Delay(10); True(source.TrySetResult(42)); Equal(42, await result); }
public static async Task Reuse() { var source = new ValueTaskCompletionSource(); var task = source.CreateTask(InfiniteTimeSpan, default); True(source.TrySetResult()); await task; source.Reset(); task = source.CreateTask(InfiniteTimeSpan, default); True(source.TrySetResult()); await task; }
public static async Task AsyncLocalAccess() { var source = new ValueTaskCompletionSource <int>(); source.Reset(); var task = source.CreateTask(InfiniteTimeSpan, default); var local = new AsyncLocal <int>() { Value = 56 }; var result = Task.Run(async() => { Equal(56, local.Value); var result = await task; Equal(56, local.Value); return(result); }); await Task.Delay(100); True(source.TrySetResult(42)); Equal(42, await result); }