C# async void

mohadang·2023년 1월 8일
0

C#

목록 보기
2/5
post-thumbnail

async void를 사용하면 exception이 발생 하여도 에러 핸들을 할 수 없다.
그래서 일반적으로 Task를 반환하여 에러를 핸들링 할 수 있도록 처리 한다
그러나 단순히 Task를 반환 한다고 해서는 에러를 핸들링 할 수 없다.

아래 코드가 실행되면 앱은 어떤 문제도 발생하지 않는다.

에러를 핸들링 하고 싶다면 DoSomething의 Task를 받아서 wait을 하거나 Task로 감싸서 안에서 await을 붙여야 한다.
하지만 다음처럼 확장 메서드를 사용하여 콜백을 등록하는 방식으로 처리할 수 있다.

특이한건 Await 호출하는 순간 async 함수를 호출 하는거라서 경고가 발생할 줄 알았는데 경고가 발생하지 않는다.
그렇다는 뜻은 Await을 하는 순간 실제로 Task를 대기 한다는 뜻이다.

이벤트 핸들러처럼 어쩔 수 없이 async void를 사용해야 하는건 예외이다.

profile
mohadang

0개의 댓글