Skip to content

ZH TW CSharp Async

Codex edited this page Oct 11, 2026 · 2 revisions

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

非同步、等待、任務和 ValueTask

手冊C# · 範例UO

async 允許在方法中使用 await。 await等待操作完成並繼續執行,而不必建立新執行緒。 Task代表操作完成,Task<T>代表完成及結果。非同步方法執行同步部分,直到第一個掛起等待。

簡單範例 (Example.cs)

請將此範例另存為 Example.cs,並與本頁其他範例分開執行。

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());

結果:

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 等待所有任務,WhenAny 等待第一個完成的任務。 WhenAny下的其他任務不會自動取消。 ValueTask在特殊的API中有用,並且對重新等待有限制。避免非同步鏈中的.Wait()和.Result;期待await。

官方文件:async、await、Task 和 ValueTask - Microsoft Learn。

Clone this wiki locally