Ganz unten asynchron?

Beim Versuch, das neue Async / Warten-Muster zu verstehen, habe ich eine Frage, auf die ich keine Antwort finden kann, nämlich ob ich meine Methoden mit Async dekorieren soll, ob ich diese Methoden von anderen Async-Funktionen aufrufen oder einfach zurückkehren möchteTaskIst wo angebracht?

Mit anderen Worten, welche dieser Klassen A, B oder C ist die beste und warum?

class A<T>
{
      public async Task<T> foo1() //Should be consumed
      {
          return await foo2();
      }

      public async Task<T> foo2() //Could be consumed
      {
          return await foo3();
      }

      private async Task<T> foo3() //Private
      {
          return await Task.Run(...);
      }
}

class B<T>
{
      public async Task<T> foo1() //Should be consumed
      {
          return await foo2();
      }

      public async Task<T> foo2() //Could be consumed
      {
          return await foo3();
      }

      private Task<T> foo3() //Private
      {
          return Task.Run(...);
      }
}

class C<T>
{
      public async Task<T> foo1() //Should be consumed
      {
          return await foo2();
      }

      public Task<T> foo2() //Could be consumed
      {
          return foo3();
      }

      private Task<T> foo3() //Private
      {
          return Task.Run(...);
      }
}

Es scheint überflüssig, Methoden zu überdekorieren, also neige ich natürlich dazuC, aber gleichzeitig fühlt es sich etwas umständlich an, damit zu arbeitenTask<T> es sei denn, Sie verwenden dieawait Stichwort.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage