Await Multiple Threads

The async way of doing this would be to make your method return a Task and the caller of that method would then await it. Your method could then look like:

private async Task SomeWork()
{
  var a = doWork1();
  var b = doWork2();
  var c = doWork3();
  var d = doWork4();
  ...
  await Task.WhenAll(a, b, c, d);
}