using System.Threading.Tasks;
using System.Collections.Generic;
using System.Collections;
using System.Diagnostics;
static AutoResetEvent autoEvent;
public static void Main()
public static void StopWatchTest(){
Stopwatch stopwatch = new Stopwatch();
Random rnd = new Random(100);
byte [] testBytes = new byte[150];
rnd.NextBytes(testBytes);
for(int i = 0 ; i < testBytes.Length; i++)
Console.WriteLine(testBytes[i]);
Console.WriteLine($"Time elapsed: {stopwatch.Elapsed}");
public static void TestMonitor()
List<Task> tasks = new List<Task>();
Random rnd = new Random();
for (int taskCtr = 0; taskCtr < 10; taskCtr++)
int[] values = new int[100];
for (ctr = 0; ctr < 100; ctr++)
values[ctr] = rnd.Next(0, 1001);
foreach (var value in values)
Console.WriteLine($"Mean for task {Task.CurrentId} : {(taskTotal * 1.0 / taskN)} (N={taskN})");
Interlocked.Add(ref n, taskN);
Interlocked.Add(ref total, taskTotal);
Task.WaitAll(tasks.ToArray());
Console.WriteLine($"Mean for all tasks: {(total * 1.0) / n} (N={n}");
catch (AggregateException ex)
foreach (var e in ex.InnerExceptions)
Console.WriteLine($"{e.GetType().Name} {e.Message}");