¿Tienes que poner Task.Run en un método para hacerlo asíncrono?

Estoy tratando de entender que async espera en la forma más simple. Quiero crear un método muy simple que agregue dos números en aras de este ejemplo, pero no es tiempo de procesamiento, solo es cuestión de formular un ejemplo aquí.

Ejemplo 1
private async Task DoWork1Async()
{
    int result = 1 + 2;
}
Ejemplo 2
private async Task DoWork2Async()
{
    Task.Run( () =>
    {
        int result = 1 + 2;
    });
}

Si esperoDoWork1Async() ¿El código se ejecutará de forma síncrona o asíncrona?

¿Necesito envolver el código de sincronización conTask.Run para que el método sea esperable Y asíncrono para no bloquear el subproceso de la interfaz de usuario?

Estoy tratando de averiguar si mi método es unTask o devolucionesTask<T> ¿Necesito envolver el código conTask.Run para hacerlo asíncrono.

Pregunta estúpida, estoy seguro, pero veo ejemplos en la red donde las personas están esperando un código que no tiene nada asíncrono y no está envuelto en unTask.Run oStartNew.

Respuestas a la pregunta(3)

Su respuesta a la pregunta