■ Task 클래스의 CompletedTask 속성을 사용하는 방법을 보여준다
※ 이 코드는 사실상 아무 작업도 수행하지 않는다.
※ 이는 주로 다음과 같은 이유로 사용된다 :
• 메서드 시그니처 준수 : ExecuteAsync 메서드가 Task를 반환하도록 선언되어 있기 때문에, 비동기 작업이 없더라도 Task를 반환해야 한다. Task.CompletedTask는 이미 완료된 Task를 반환한다.
• 향후 확장성 : 현재는 비동기 작업이 필요 없지만, 나중에 비동기 작업을 추가할 수 있는 가능성을 열어둔다.
• 일관성 유지 : 다른 비슷한 메서드들이 비동기적으로 동작한다면, 일관성을 위해 이 메서드도 비동기 형태를 유지한다.
• 컴파일러 경고 방지 : async 키워드를 사용하는 메소드에서 await를 사용하지 않으면 컴파일러 경고가 발생할 수 있다. 이 코드로 그 경고를 방지한다.
▶ 예제 코드 (C#)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
using System; using System.Threading.Tasks; private static void Execute(int count) { for(int i = 0; i < count; i++) { Console.WriteLine(i + 1); } } private static Task ExecuteAsync(int count) { try { Execute(count); return Task.CompletedTask; } catch(Exception exception) { return Task.FromException(exception); } } |