public async Task TestTaskWillFinish() { var tasksFactories = new List <Func <Task> >(); for (int i = 0; i < expectedCount; i++) { int copy = i; tasksFactories.Add(() => SetPosition(copy, array)); } var startTime = DateTime.UtcNow; await AsyncHelper.InvokeTasksByQueue(tasksFactories, threads); var endTime = DateTime.UtcNow; var executionTime = endTime - startTime; Assert.IsTrue(executionTime > TimeSpan.FromSeconds(expectedMinWait / 1000)); Assert.IsTrue(executionTime < TimeSpan.FromSeconds(expectedMaxWait / 1000)); Assert.AreEqual(array.Min(), 1); Assert.AreEqual(array.Max(), 1); }