Repository navigation
KO CSharp Async
Codex edited this page Oct 11, 2026
·
2 revisions
Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
async는 메소드 내에서 await을 허용합니다. await는 작업이 완료될 때까지 기다렸다가 반드시 새 스레드를 생성하지 않고도 실행을 계속합니다. Task는 작업 완료를 나타내고, Task<T>는 완료 및 결과를 나타냅니다. 비동기 메서드는 첫 번째 보류 대기가 발생할 때까지 동기 부분을 실행합니다.
이 예제를 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에서 기대됩니다.
ClassicUO — Bad Newbie & C# Scripts IDE