using System.Diagnostics;
using System.Threading.Tasks;
public static void Main()
var testClass = new TestClass();
testClass.Calculate(1).GetAwaiter().GetResult();
testClass.Calculate(2).GetAwaiter().GetResult();
testClass.Calculate(4).GetAwaiter().GetResult();
private readonly ulong max = 40000000ul;
public double A { get; set; } = 1.0;
public async Task Calculate(int taskAmount)
var sw = Stopwatch.StartNew();
await Task.WhenAll(Enumerable.Range(0, taskAmount).Select(_ => Task.Run(() => CalculateStuff(new Sample(), (max / (ulong)taskAmount)))));
Console.WriteLine($"{taskAmount}: {sw.ElapsedMilliseconds}");
private static void CalculateStuff(Sample s, ulong max)
for (ulong i = 1; i <= max; i++)
s.A = Math.Pow(s.A, 1.2);