Diferença entre Tarefa e Assíncrona

O C # fornece duas maneiras de criar métodos assíncronos:

Método 1:

static Task<string> MyAsyncTPL() {
  Task<string> result = PerformWork();
  return result.ContinueWith(t => MyContinuation());
}

Método 2:

static async Task<string> MyAsync() {
  string result = await PerformWork();
  return MyContinuation();
}

Ambos os métodos acima são assíncronos e conseguem a mesma coisa. Então, quando devo escolher um método sobre o outro? Existem diretrizes ou vantagens em usar um sobre o outro?

questionAnswers(2)

yourAnswerToTheQuestion