If my interface must return Task what is the best way to have a no-operation implementation?

后端 未结 9 1058
-上瘾入骨i
-上瘾入骨i 2020-11-28 17:59

In the code below, due to the interface, the class LazyBar must return a task from its method (and for argument\'s sake can\'t be changed). If LazyBar

9条回答
  •  Happy的楠姐
    2020-11-28 18:19

    To add to Reed Copsey's answer about using Task.FromResult, you can improve performance even more if you cache the already completed task since all instances of completed tasks are the same:

    public static class TaskExtensions
    {
        public static readonly Task CompletedTask = Task.FromResult(false);
    }
    

    With TaskExtensions.CompletedTask you can use the same instance throughout the entire app domain.


    The latest version of the .Net Framework (v4.6) adds just that with the Task.CompletedTask static property

    Task completedTask = Task.CompletedTask;
    

提交回复
热议问题