Implementação síncrona da interface que retorna Tarefa

Igual aImplementando uma Interface que Requer um Tipo de Retorno de Tarefa no Código Síncrono embora eu esteja curioso para ignorar o erro do compilador que minha situação gera.

Digamos que eu tenho uma interface como esta:

public interface IAmAwesome {
    Task MakeAwesomeAsync();
}

Em algumas implementações, obtém benefícios impressionantes ao ser feito de forma assíncrona usandoasync eawait. Isso é realmente o que a interface está tentando permitir.

Em outros casos, talvez raro, apenas um método síncrono simples é necessário para impressionar. Então, vamos supor que a implementação seja assim:

public class SimplyAwesome : IAmAwesome {
    public async Task MakeAwesomeAsync() {
        // Some really awesome stuff here...
    }
}

Isso funciona, mas o compilador está avisando:

Este método carece de operadores 'aguardam' e será executado de forma síncrona. Considere usar oawait operador para aguardar chamadas de API sem bloqueio ou 'aguardar TaskEx.Run (...)' para executar um trabalho vinculado à CPU em um encadeamento em segundo plano.

O compilador está realmente sugerindo esta solução:

public class SimplyAwesome : IAmAwesome {
    public async Task MakeAwesomeAsync() {
        await Task.Run(() => {
            // Some really awesome stuff here, but on a BACKGROUND THREAD! WOW!
        });
    }
}

Minha pergunta é - o que deve determinar quando eu escolho ignorar esse aviso do compilador? Em alguns casos, o trabalho é tão simples que gerar um fio para ele é inegavelmente contraproducente.

questionAnswers(3)

yourAnswerToTheQuestion