0 Pluspunkte 0 Minuspunkte

Wie implementiert man asynchrone Programmierung in C#? Ich habe diesen Code

using System;
using System.Threading.Tasks;

class Program
{
    static async Task Main(string[] args)
    {
        Console.WriteLine("Start");

        await DoAsyncTask();

        Console.WriteLine("End");
    }

    static async Task DoAsyncTask()
    {
        Console.WriteLine("Task started");
        await Task.Delay(2000);
        Console.WriteLine("Task completed");
    }
}

Aber der Main Task steckt solange bis DoAsyncTask fertig ist.

Start
Task started
Task completed
End

Sollte es aber nicht so aussehen?

Start
Task started
End
Task completed

Wie kann ich während der Ausführung von DoAsyncTask eine andere Aufgabe ausführen?

von  

1 Antwort

0 Pluspunkte 0 Minuspunkte

Das Keyword await wartet auf den asynchronen Task. Alles was du neben dem Task ausführen willst musst du vor dem await Keyword definieren.

using System;
using System.Threading.Tasks;

class Program
{
    static async Task Main(string[] args)
    {
        Console.WriteLine("Start");

        Task task = DoAsyncTask(); // Hier wird die Methode asynchron aufgerufen, aber der Task wird nicht erwartet

        // Der Hauptthread kann währenddessen andere Aufgaben ausführen
        Console.WriteLine("Doing something else...");

        await task; // Hier wird der Hauptthread auf das Ende der asynchronen Aufgabe warten

        Console.WriteLine("End");
    }

    static async Task DoAsyncTask()
    {
        Console.WriteLine("Task started");
        await Task.Delay(2000); // Eine asynchrone Aufgabe simulieren (z.B. Wartezeit)
        Console.WriteLine("Task completed");
    }
}

Ausgabe

Start
Task started
Doing something else...
Task completed
End
von