async void ExecuteCalculatePrimeCommand() { PrimeService ps = new PrimeService(); Files.Clear(); // correct solution var numbers = await ps.GetPrimeNumbersAsync(1, 10000); // not faster, but not blocking (its even slower): 40ms // eventhough these 2 statements only take 30ms, those will block the ui // we can avoid it, by using Task.Start(() => {..}) here // correct solution numbers = ps.GetPrimeNumbers(1, 10000); // 30ms // wrong order numbers = ps.GetPrimeNumbersParallel(1, 10000); // first call: 25ms // very fast at second call<. 4ms (Thread creation is very performance intensive) foreach (var prime in numbers) { Files.Add(prime.ToString()); } }