๊ฒ ์์ํ ๋ awake์์ ํ์ด์ด ๋ฒ ์ด์ค ๋งค๋์ ๊ฐย ๋ฐ์ดํฐ๋ค์ ๋ก๋ํด์ ์ค๋ ์ท๋ค์ ๊ฒ์ ๋งค๋์ ธ ๋ฆฌ์คํธ์๋ค ๋ด๋๋ฐย
๊ฐ๋์ฉ ๋ฆฌ์คํธ์ ์๋ด๊ธฐ๊ณ ์คํํธ ํจ์๊น์งย ๋์ด ๊ฐ๋๊ฐ ์์ย
์ด๋ด๋ ์์ธ ์ฒ๋ฆฌ๋ฅผ ์ด๋ป๊ฒ ํด์ค์ผ๋จ?
๋ฐ์ดํฐ ๋ฒ ์ด์ค ์์ฒด ์์ธ ์ฒ๋ฆฌ(task.exception) ์์๋ย
completed๋ผ๊ณ ์ ๋๋ก ๋ก๋ํ๋ค๊ณ ๋ง ๋จ๋๋ฐย
๋ฆฌ์คํธ์ ์ ๋ด๊ฒจ์ ์ ๋ณด๋ค์ด ์ ๋ค์ด์ฌ๋ ๋๋ฌด ๋นํฉ ์ค๋ฌ์ด๋ฐย
๊ฒ ๊ป๋ค ํค์ธ์~ ๋ผ๊ณ ๋งค๋ฒ ํ ์ ๋ ์๊ณ .. ์ข์ ๋ฐฉ๋ฒ์ด ์์๊น?ย
ํค์๋ ๋จ์๋ผ๋ ๋ถํํด
ย ย
๋ฌธ์ ๋ ๋งค๋ฒ ๊ทธ๋ฌ๋๊ฒ ์๋๊ณ ์์ฃผ ๊ฐ๋์ฉ ๊ทธ๋ฌ๋๊ฒ ๋ฌธ์ ์ ์ด๋๊ฐ ๋ฌธ์ ์ธ์ง ํ์ ํ๊ธฐ๊ฐ ํ๋ค์ด
๋น๋๊ธฐ๋ผ์ ๊ทธ๋ฐ๊ฑฐ ์๋?? ๋๊ธฐ๋ก ๋ค ๋ฐ์๋๊น์ง ๊ธฐ๋ค๋ฆฌ๊ฒ ํ๋ฉด ๋์ง ์์๊น ์ถ์๋ฐ
์ฝ๋ฃจํด์ผ๋ก yield return new WaitUntil(predicate:()=>DBTask.IsCompleted); ์ด๋ฐ์์ผ๋ก ๋๊ธฐ ์ฒ๋ฆฌ ํ๋๋ฐ๋ ๊ฐ๋์ฉ 100๋ฒ ํ๋ฉด ๋ ์ธ๋ฒ? ์ ๋ ๋ฐ์ดํฐ ์๋ค์ด์ด ์๋ฌ ๋ก๊ทธ๊ฐ ์์ง๋ ์๋ค๋ณด๋ ์ด๋ ต๋ค..
๋ด๊ฐ ์์ฆ ํ์ด์ด๋ฒ ์ด์ค ์ ์ฐ๊ณ ์์ด์ ๊ธฐ์ต์ด ์๋๋๋ฐ ์ ์ด์ ํธ์ถํ ๋ ๋๊ธฐ์ฝ๋๋ก ์์ฑํด๋ณด์ . ์ฝ๋ฃจํด๋ ๋น๋๊ธฐ์ฒ๋ผ ๋์ํ๋ ๊ฑฐ ์์ด.
์ง๊ธ์ ๋ฐ์ดํฐ ์์ด ์ ์ด์ ๊ฐํ์ ์ผ๋ก ๋ฐ์ํ๊ฒ ์ง๋ง ๋ด ์์์ผ๋ก ๋ฐ์ดํฐ ์ปค์ง๋ฉด ๋ฐ์ ๋น๋๊ฐ ์ปค์ง๊ฑฐ์.
์๋ํด๋ณผ๊ฒ ์กฐ์ธ ๊ณ ๋ง์
๋๊ธฐ๋กํ๋ฉด ๋ ๊ฑฐ์. ๋๊ธฐํ์ฝ๋ ๋ชจ๋ฅด๊ฒ ์ผ๋ฉด ์ฝ๋ฃจํด์์ ํ์ง ๋ง๊ณ ํจ์์์ Invoke๋ก ๋๊ธฐํด๋ณด์ . ์ฝ๋ฃจํด๋ ๋๋ฒ๊ทธ ์ฐ์ด๋ณด๋ฉด ๋น๋๊ธฐ์ฒ๋ผ ๋์ํ๋๋ก ๋ง๋ค์ด๋์๊ฑฐ๋ผ์ ๊ฐํ์ ์ผ๋ก ๊ทธ๋ฐ ๋ฒ๊ทธ๊ฐ ์๊ธฐ๋๊ฑฐ์.
์๋๋ฉด ์ ์ด์ ํธ์ถ ์์ฒด๋ฅผ ์ฝ๋ฃจํด์์ ํ๊ณ ๊ทธ ์ฝ๋ฃจํด์์ ๋ฐํ๊ฐ์ ๊ธฐ๋ค๋ฆฌ๊ฒ ํ๋ ๋ฐฉ๋ฒ๋ ์์. Update์์ ๋ฐํ๊ฐ์ด ์ฌ๋๊น์ง ๊ธฐ๋ค๋ฆฌ๊ฒ ํ๋ ๋ฐฉ์.