dimohy
1
AsyncAwaitBestPractices๋
John Thiriet๋์ ์๋ ๊ธ
์ ์๊ฐ์ ๋ฐ์ ๋ง๋ค์๋ค๊ณ ํ๋ฉฐ System.Threading.Tasks.Task
๋ฐ System.Threading.Tasks.ValueTask
์ ํ์ฅ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์
๋๋ค.
async/await์์ ๋ฐ์ํ ์ ์๋ ๋๊ฐ์ง ๋ฌธ์ ๋ฅผ ํด๊ฒฐํฉ๋๋ค.
- ๊ฒฝํฉ ์กฐ๊ฑด ์์ฑ / ๋์ ์คํ (์ฌ๋ฐ๋ฅธ ์์๋ก ์ฝ๋ฉํ์ง๋ง ์ฝ๋๊ฐ ์์๊ณผ ๋ค๋ฅด๊ฒ ์์๊ฐ ๋ฐ๋์ด ์คํ๋๋ ๊ฒฝ์ฐ)
- ์ปดํ์ผ๋ฌ๋ ์์ธ๋ฅผ ์ธ์ํ์ง๋ง ์ฝ๋๋ ์์ธ๋ฅผ ๋ณผ ์ ์๋ ๋ฉ์๋ ์์ฑ (ํนํ ์ค์๋ก ๋ณผ ์ ์๋ ๊ฒฝํฉ ์กฐ๊ฑด์ ๋์
ํ ๊ฒฝ์ฐ ๋๋ฒ๊ทธ ํ๊ธฐ๊ฐ ์ด๋ ค์)
9 Likes
suwoo
2
๋ฉ์๋ ๋ช
์ด ์ฌ๋ฐ๋ค์ ใ
ใ
SafeFireAndForget
์ด๋ผ๋โฆ
2 Likes
ํฅ๋ฏธ๋กญ๋ค์.
์ ์๊ฐ ๋ง ํ๋ฏ์ด async
๋ฅผ ๋ถ์ธ ํจ์๋ ๊ทธ ํจ์๋ฅผ ํธ์ถํ๋ ํจ์๋ฅผ ๋ค์ async
๊ฐ ๋ถ์ ํจ์๋ก ๋ง๋ค๋๋ก ํฉ๋๋ค.
๊ทธ๋ ๊ฒ ์์ผ๋ฉด ๊ฒฝ๊ณ
๊ฐ ๋ฐ์ํ์ฃ . ๊ทธ๋ ๊ฒ ๊ณ์ ํจ์ ํธ์ถ ๊ด๊ณ๋ฅผ ๋ฐ๋ผ๊ฐ๋ค๋ณด๋ฉด ์ธ์ ๊ฐ๋ Task
๋ก ๋ฆฌํดํ ์ ์๋ ์ํฉ์ ๋ง๋๊ฒ ๋๋ ๊ฒฝ์ฐ๊ฐ ์์ต๋๋ค.
์์ฃผ ํํ ๊ฒฝ์ฐ๋ก Event handler๊ฐ ์์ฃ . ์ด๋ฐ ๊ฒฝ์ฐ async void๋ฅผ ์ธ ์ ๋ฐ์ ์์ด์ง๋๋ค.
์ด๊ฑธ ํผํ๊ธฐ ์ํด Event handler์์์ ํธ์ถ ๋๋ async
ํจ์์ ๋ํด await
๋ฅผ ์ฌ์ฉํ์ง ์๊ณ
async
ํจ์ ๋ด๋ถ์์ ์์ธ๋ฅผ ์ฒ๋ฆฌ ํ๋ ๋ฐฉ์์ผ๋ก async void๋ฅผ ํผํ๋ ๋ฐฉ๋ฒ์ ์ ์ํ๋ค์
์ ์๊ฐ ์์ฑํ 'FireAndForgetSafeAsyncโํจ์๋ ์ด๋ฐ๊ฒฝ์ฐ ์ธ๋งํ ์๋ ์๊ฒ ๋ค๋ ์๊ฐ์ด ๋ค๊ฒ ํฉ๋๋ค.
์ข์ ๊ธ ๊ณต์ ๊ฐ์ฌํฉ๋๋ค.
5 Likes