KO CSharp Async - LIHACHTETAN/ClassicUO-Bad-Newbie-CSharp-Scripts-IDE GitHub Wiki

ะฃะบั€ะฐั—ะฝััŒะบะฐ ยท ะ ัƒััะบะธะน ยท 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.

โš ๏ธ **GitHub.com Fallback** โš ๏ธ