public async Task QueueFunction() { // Assign var queue = new SerialQueue(); var list = new List <int>(); var tasks = new List <Task <int> >(); var range = Enumerable.Range(0, 10000); // Act foreach (var number in range) { tasks.Add(queue.EnqueueFunction(() => { list.Add(number); return(number); })); } await Task.WhenAll(tasks); // Assert Assert.True(tasks.Select(x => x.Result).SequenceEqual(list)); }
public async Task QueueAsyncFunctionAsNormalFunction() { // Assign var queue = new SerialQueue(); bool success = false; // Act try { await queue.EnqueueFunction(async() => { await Task.Delay(50); }); success = true; } catch (Exception) { } Assert.False(success); }