Beispiel #1
0
        /// <summary>
        /// Does a parallel ForEach around a blocking method
        /// </summary>
        /// <remarks>Since the method is blocking (even though it returns a task) the Console.WriteLine won't
        /// be executed till all calls have been completed in parallel</remarks>
        private static Task ParallelForEachSleepLoopTests()
        {
            var sw = BeginExample("ParallelForEachSleepLoopTests starting...");

            var array = new[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
            var sut   = new BlockingMethod();

            Parallel.ForEach(array, (i, state) => sut.StartIteration(i, DelayDurationOne, "ParallelForEachSleepLoopTests"));
            sw.Stop();
            Console.WriteLine($"Duration of Parallel.ForEach sleep iteration loop for {array.Length} iterations sleep for {DelayDurationOne} ms was {sw.ElapsedMilliseconds} ms");
            return(Task.CompletedTask);
        }
Beispiel #2
0
        /// <summary>
        /// Loops around a blocking method trying to do it asynchronously (but it's blocking so it can't)
        /// with no parallelism
        /// </summary>
        private static async Task SleepLoopTests()
        {
            var sw = BeginExample("SleepLoopTests starting...");

            var sut = new BlockingMethod();

            for (var i = 0; i < IterationCount; i++)
            {
                await sut.StartIteration(i, DelayDurationOne, "One");
            }
            sw.Stop();

            Console.WriteLine($"Duration of async sleep iteration loop for {IterationCount} iterations sleeping for {DelayDurationOne} ms was {sw.ElapsedMilliseconds} ms");
        }