Skip to content

DE CSharp Async

Bad Newbie edited this page Oct 16, 2026 · 3 revisions

Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어

Async, Wait, Task und ValueTask

Handbuch C# · Beispiele UO

async erlaubt await innerhalb einer Methode. await wartet auf den Abschluss des Vorgangs und setzt die Ausführung fort, ohne unbedingt einen neuen Thread zu erstellen. Task steht für den Abschluss des Vorgangs, Task<T> steht für den Abschluss und das Ergebnis. Eine asynchrone Methode führt den synchronen Teil bis zur ersten ausstehenden Wartezeit aus.

Einfaches Beispiel (Example.cs)

Speichern Sie dieses Beispiel separat als Example.cs. Führen Sie es unabhängig von den anderen Beispielen dieser Seite aus.

Example.cs:

// PROJECT-EXAMPLE
async System.Threading.Tasks.Task<int> ReadAsync()
{
    await System.Threading.Tasks.Task.Delay(1);
    return 7;
}
System.Console.WriteLine(await ReadAsync());

Ergebnis:

7
async Task<int> CalculateAsync(int value)
{
    await WaitAsync(10);
    return value * 2;
}
int result = await CalculateAsync(21);
UO.Print(result.ToString());
Task<int> FirstAsync() => Task.FromResult(2);
Task<int> SecondAsync() => Task.FromResult(3);
int[] results = await Task.WhenAll(FirstAsync(), SecondAsync());
UO.Print(results.Sum().ToString());

Task.WhenAll wartet auf alle Aufgaben, WhenAny auf die erste erledigte. Andere Aufgaben unter WhenAny werden nicht automatisch abgebrochen. ValueTask ist in speziellen API nützlich und unterliegt Einschränkungen beim erneuten Warten. Vermeiden Sie .Wait() und .Result in einer asynchronen Kette; erwarten Sie in await.

Offizielle Dokumentation: async, waiting, Task und ValueTask – Microsoft Learn.

Clone this wiki locally