Использование ключевого слова async в сигнатуре метода для возврата задачи в конечную точку Web Api

Если бы я хотел написать неблокирующее действие веб-API, возвращаяTask объект, я мог бы сделать это с или без использованияasync ключевое слово как таковое:

Использование асинхронного
public async Task<HttpResponseMessage> Get()
{
    Func<HttpResponseMessage> slowCall = () =>
    {
        Thread.Sleep(2000);
        return Request.CreateResponse(HttpStatusCode.OK, "Hello world");
    };

    var task = Task<HttpResponseMessage>.Factory.StartNew(slowCall);
    return await task;
}
Без использования асинхронного
public Task<HttpResponseMessage> Get()
{
    Func<HttpResponseMessage> slowCall = () =>
    {
        Thread.Sleep(2000);
        return Request.CreateResponse(HttpStatusCode.OK, "Hello world");
    };

    var task = Task<HttpResponseMessage>.Factory.StartNew(slowCall);
    return task;
}

Они оба работают правильно. Тем не менее, каждый пример, который я видел (в Интернете и в книгах) по написанию действия веб-API, которое возвращаетTask используетasync ключевое слово. Конечно, я понимаю, что это дает вам больше гибкости, так как позволяет вам контролировать то, что вы хотите «ждать», а что нет. Но при условии, что ваша функциональность может быть эффективно обработана в любом случае,

Есть ли преимущество в использовании одного подхода по сравнению с другим?Должен ли я всегда использовать ключевое слово async (и если да, то почему)?Или это не имеет значения?

Ответы на вопрос(2)

Ваш ответ на вопрос