Saltar al contenido

Método de tareas asincrónicas de C# sin esperar ni devolver

Nuestro team de redactores ha estado horas investigando para darle resolución a tus búsquedas, te compartimos la solución de modo que esperamos serte de mucha ayuda.

Solución:

public Task DoSomething()

    return Task.CompletedTask;

No hay necesidad de la async.

Si está usando una versión anterior de .NET, use esto:

public Task DoSomething()

    return Task.FromResult(0);

Si encuentra que necesita devolver un resultado pero aún no necesita await cualquier cosa, prueba;

public Task DoSomething()

    return Task.FromResult(new Result())

o, si realmente desea usar async (no recomendado);

public async Task DoSomething()

    return new Result();

Veo que la mayoría de la gente prefiere dejar de lado el async y use Task.ComletedTask en lugar de. Pero incluso si await no se usa, todavía hay una gran diferencia en el manejo de excepciones

Considere el siguiente ejemplo

static async Task Main(string[] args)


    Task task = test(); // Will throw exception here
    await task;

    Task taskAsync = testWithAsync();
    await taskAsync; // Will throw exception here


static Task test()

    throw new Exception();
    return Task.CompletedTask; //Unreachable, but left in for the example


static async Task testWithAsync()

    throw new Exception();

Utilizando

test().ContinueWith(...); o Task.WhenAll(test())

puede resultar en un comportamiento inesperado.

Por lo tanto, prefiero async en lugar de Task.CompletedTask o Task.FromResult.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *