Ich würde empfehlen die Asynchronous programming patterns zu lernen die .NET unterstützt bzw. vor allem das TAP lernen, da es das empfohlene/übliche Pattern ist.
https://docs.microsoft.com/en-us/dotnet/standard/asynchronous-programming-patterns/
HIer musst du eben entscheiden, ob es nicht sinnvoller ist gleich mit einer synchroner Methode zu arbeiten. Wenn an einer gezielten Stelle "nichts weitergehen kann" weil du z.B. ein Zwischenergebnis brauchst, dann wäre asynchrone Programmierung hier evtl. fehl am Platz. Du müsstest schließlich hier auf das Ergebnis warten bzw. dir das Result des Tasks ansehen.
Das schöne ist halt, dass du nichts "abarbeitest" sondern viele Dinge gleichzeitig machen kannst. Das ist praktisch bei einer recht großen UI die mit vielen Daten gefüttert wird. Stell dir vor du musst in einem Fenster große Datenmengen nacheinander abholen und der UI wäre blockiert...
Auch hast du die Freiheit Tasks zu canceln, falls etwas schief geht => https://docs.microsoft.com/en-us/dotnet/standard/parallel-programming/task-cancellation
Meine Empfehlung wäre: Such dir mal ne offene API (https://github.com/public-apis/public-apis) und spiele damit rum. Gerade wenn du eine Anwendung erstellst, die mit einer API kommuniziert, setzt du auf asnychrone Programmierung.
Ein Beispiel: Deine Anwendung zeigt dem User nebenbei noch das Wetter an, welches du von einer Wetter-API bekommst. Jetzt soll natürlich nicht ständig die UI blockiert werden, wenn das Wetter abgerufen wird. Das Ding soll so nebenbei laufen. Auch soll die App nicht abstürtzen, wenn die Wetter-API Probleme hat. Ist ja nicht deine Baustelle. Du willst also asynchron mit der API kommunizieren. Wenn du Daten bekommst => super, wenn nicht => App läuft weiter und schmiert nicht ab.