์ค๋จํด์ผํ ์ผ์ด ์์ ๋ย CancellationTokenSource ๋ง๋ค์ด์ ์ฐ๊ณ ์๋๋ฐ
CancellationTokenSource.cancle(); ํด์ฃผ๊ณ ๋์ย CancellationTokenSource.dispose(); ํด์ฃผ๋๋ผ
์ด๊ฑดย CancellationTokenSource์ ์์ ๊ธฐ ์ํด์ Disposeํด์ฃผ๋ ๊ฑฐ์?
์๋๋ฉด unitask ์์ ์ Disposeํด์ฃผ๋ ๊ฑฐ์?
์๋ฃ ์ฐพ์๋ณด๋๋ฐ ์ด ๋ถ๋ถ์ ์ค๋ช ์ด ์๋๊ฑฐ ๊ฐ์์ ๊ถ๊ธํ์
CancellationTokenSource ์ ์ผ์ผ๋ฉด unitask ์ฐ๊ณ ๋ท์ฒ๋ฆฌ ํด์ค์ผ ํ ๊ฑฐ ์๋๊ฑฐ์ง?
๋์ถฉ๊ฒ์ํด๋ดค๋๋ฐ Dispose์ํ๋ฉด ๋ฉ๋ชจ๋ฆฌ ๋ฆญ์ด ๋ฐ์ํ๋๊ฑฐ ๊ฐ๋ค. ๊ทผ๋ฐ ์ด๊ฑด ๋ท๋ทํ๋ ์์ํฌ์์ Task๋ฅผ ๋ฉํฐ์ค๋ ๋ฉ ์ํฉ์์ ๋ง์ด ์ฐ๋๋ฐ, ์ด Token๊ฐ์ ๊ฒฝ์ฐ ๋ฉํฐ์ค๋ ๋์์ ์ฌ์ฉํ ๋ ๊ด๋ จ๋ ๋ฉ๋ชจ๋ฆฌ ์ด์์ธ๊ฑฐ ๊ฐ์. ์ ๋ํฐ๋ ์ ๊ฒฝ์์จ๋ ๋ ๊ฑฐ๊ฐ๋ค. ์ ๋ํฐ๋ Taskํ ๋นํด๋ ๋ฉ์ธ์ค๋ ๋์์ ๋์๊ฐ๊ฑฐ๋
ใณใณ unitask๋ฅผ disposeํ๋๊ฒ ์๋๋ผ CancellationTokenSource์ disposeํ๋ ๊ฑฐ์ฃ ?
ใณใณ๋ ์ข ๋ถ์กฑํ๋๋ฏ ๊ฐ์ฌํฉ๋๋ค
CancellationTokenSource Dispose๋ง์. Cancelํ๋ค์์ Disposeํ๊ณ ๋ง์ฝ ๊ทธ๋ฅ Task๊ฐ Cancel์์ด ์ ๋๋๊ณ ๋์ด์ ํ ํฐ์์ค ์ธ์ผ์์ผ๋ฉด Disposeํ๊ณ ๋ด๋ถ์ ์ผ๋ก unmanaged๋ฉ๋ชจ๋ฆฌ๊ฐ ์์ผ๋๊น ๊ทธ๊ฑธ Disposeํด์ผ ํ๋๊ฑฐ ๊ฐ์
๋๋ ํ ํฐ ๊ด๋ จํด์ ์ฐพ์๋ดค์๋๋ฐ, ์ ๋ํ ์คํฌ ๊ฐ์ด๋์๋ dispose๋ฅผ ํด์ฃผ๊ณ ์์ด์ ๊ทธ๋ฅ ํด์ฃผ๋ ๋ฐฉํฅ์ผ๋ก ์ก์์. ์บ์ฌ์ํฌ์ผ ์์ ๋ ์บ์ฌํ๊ณ dispose ๊ฐ์ด ํด์ฃผ๋ฉด๋๋๊ฑฐ๊ณ ํน์ ์บ์ฌ๋์๋ ์๋์๋ ๋ชจ๋ฅด๊ฒ ์ผ๋ฉด cts.iscancellationrequested ์ฒดํฌํ๊ณ ์บ์ฌ ๋์คํฌ์ฆ ์ ํ ํฐ ๋ฐํํด์ฃผ๋ฉด ๋๋๊ฑฐ๋๊น...