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

ะฃะบั€ะฐั—ะฝััŒะบะฐ ยท ะ ัƒััะบะธะน ยท English ยท Deutsch ยท Franรงais ยท Italiano ยท Espaรฑol ยท ็น้ซ”ไธญๆ–‡ ยท ๆ—ฅๆœฌ่ชž ยท ํ•œ๊ตญ์–ด

์ทจ์†Œ, ์ผ์‹œ์ค‘์ง€ ๋ฐ ๋ฐฑ๊ทธ๋ผ์šด๋“œ ์Šคํฌ๋ฆฝํŠธ

์„ค๋ช…์„œ C# ยท ์˜ˆ์‹œ UO

CancellationTokenSource๋Š” ์ทจ์†Œ ์š”์ฒญ์„ ์ƒ์„ฑํ•˜๊ณ , CancellationToken๋Š” ์ž‘์—…์— ์ „๋‹ฌ๋ฉ๋‹ˆ๋‹ค. ์ทจ์†Œ๋Š” ํ˜‘์กฐ์ ์ž…๋‹ˆ๋‹ค. ์ž‘์—…์—์„œ ํ† ํฐ์„ ํ™•์ธํ•˜๊ฑฐ๋‚˜ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค. ํฌํ•จ๋œ ์Šคํฌ๋ฆฝํŠธ๋Š” Cancellation๋ฅผ ์–ป์Šต๋‹ˆ๋‹ค. WaitAsync๋Š” ๋Œ€๊ธฐ์— ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

๊ฐ„๋‹จํ•œ ์˜ˆ์ œ (Example.csx)

์ด ์˜ˆ์ œ๋ฅผ Example.csx๋กœ ๋”ฐ๋กœ ์ €์žฅํ•˜๊ณ  ์ด ํŽ˜์ด์ง€์˜ ๋‹ค๋ฅธ ์˜ˆ์ œ์™€ ๋…๋ฆฝ์ ์œผ๋กœ ์‹คํ–‰ํ•˜์„ธ์š”.

Example.csx:

Cancellation.ThrowIfCancellationRequested();
await WaitAsync(10);
UO.Print("Done");

์ทจ์†Œ๋Š” ํ˜‘๋ ฅ ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค. ํ† ํฐ ํ™•์ธ๊ณผ WaitAsync๋Š” Stop์— ๋ฐ˜์‘ํ•˜์ง€๋งŒ ์ทจ์†Œ๋ฅผ ์ง€์›ํ•˜์ง€ ์•Š๋Š” ์™ธ๋ถ€ ์ฝ”๋“œ๋Š” ๊ณ„์† ์‹คํ–‰๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฒฐ๊ณผ:

Done
for (int i = 0; i < 3; i++)
{
    Cancellation.ThrowIfCancellationRequested();
    await WaitAsync(100);
    UO.Print($"Tick {i}");
}
{
    using var timeout = new CancellationTokenSource(TimeSpan.FromSeconds(1));
    using var linked = CancellationTokenSource.CreateLinkedTokenSource(Cancellation, timeout.Token);
    try
    {
        await Task.Delay(10, linked.Token);
        UO.Print("Operation completed");
    }
    catch (OperationCanceledException) when (timeout.IsCancellationRequested)
    {
        UO.Print("Local timeout");
    }
}

์Šคํฌ๋ฆฝํŠธ ์ค‘์ง€๋ฅผ ๋ฌดํ•œ ์ฐจ๋‹จ OperationCanceledException๋กœ ๋Œ€์ฒดํ•˜์ง€ ๋งˆ์„ธ์š”. ํƒ€์‚ฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ๋Œ€ํ•œ ์ž„์˜ ์ฐจ๋‹จ โ€‹โ€‹ํ˜ธ์ถœ์€ ํ† ํฐ์ด ์žˆ๋‹ค๊ณ  ํ•ด์„œ ์ค‘๋‹จ๋  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์ผ์‹œ ์ค‘์ง€์™€ ์ทจ์†Œ ์š”์ฒญ์˜ ๋ชฉ์ ์€ ๋‹ค๋ฆ…๋‹ˆ๋‹ค. ์ผ์‹œ ์ค‘์ง€๋Š” ๊ณ„์†์„ ์œ ์ง€ํ•˜๊ณ , ์ทจ์†Œ๋Š” ์‹คํ–‰์„ ์ข…๋ฃŒํ•ฉ๋‹ˆ๋‹ค.

๊ณต์‹ ๋ฌธ์„œ: ์ทจ์†Œ, ์ผ์‹œ ์ค‘์ง€ ๋ฐ ๋ฐฐ๊ฒฝ ์Šคํฌ๋ฆฝํŠธ - Microsoft Learn.

์ทจ์†Œ ์š”์ฒญ์€ ํ˜‘์กฐ์ ์ž…๋‹ˆ๋‹ค. Task.Delay Cancellation ์ „์†ก ์—†์ด, ์ทจ์†Œ ์ง€์› ์—†์ด ํƒ€์‚ฌ ์ž‘์—… ๋ฐ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ํ˜ธ์ถœ ๋Œ€๊ธฐ๋Š” Stop๋ฅผ ๋ˆ„๋ฅธ ํ›„ ๊ณ„์†ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ทจ์†Œ ์š”์ฒญ์ด ์ด๋ฃจ์–ด์ง€๋ฉด ํ•ด๋‹น ์‹คํ–‰์— ๋Œ€ํ•œ ์ถ”๊ฐ€ ๊ฒŒ์ž„ ํ™œ๋™์ด ๊ธˆ์ง€๋ฉ๋‹ˆ๋‹ค. ์ด๋Š” .NET ์ฝ”๋“œ๊ฐ€ ์ฆ‰์‹œ ์ข…๋ฃŒ๋˜๋„๋ก ๊ฐ•์ œํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.