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);
        }