Skip to content

KO 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에서 기대됩니다.

공식 문서: 비동기, 대기, 작업 및 ValueTask - Microsoft Learn.

Clone this wiki locally