KO CSharp Async - LIHACHTETAN/ClassicUO-Bad-Newbie-CSharp-Scripts-IDE GitHub Wiki
ะฃะบัะฐัะฝััะบะฐ ยท ะ ัััะบะธะน ยท 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์์ ๊ธฐ๋๋ฉ๋๋ค.
๊ณต์ ๋ฌธ์: ๋น๋๊ธฐ, ๋๊ธฐ, ์์ ๋ฐ ValueTask - Microsoft Learn.