Async - czy trzeba deklarować task gdy użyjesz await?

0

Hej, w zasadzie to gdy użyję minimum raz await w metodzie async, to całość jest jakby automatycznie w tasku i nie muszę zamykać ciała w task? Tak mi mówi IDE. Słabo się googluje takie rzeczy. Mam locki i nie chce żeby mi blokowało.

1

To prawda. Metoda asynchroniczna (oznaczona przez async) jest asynchroniczna :D
Jeśli wywołujesz coś przez await, to to się wykona asynchronicznie.
Możesz nic nie wywołać, np:

public async Task Foo()
{
   a();
   b();
   c();
}

Wtedy metoda będzie mimo wszystko synchroniczna i async Ci tu niczego nie daje. Dopiero w takiej sytuacji możesz zrobić:

public async Task Foo()
{
   await Task.Run(() =>
   {
      a();
      b();
      c();
   });
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1