Skip to content

AsyncEnumerableResult: leer progresivamente ​

AsyncEnumerableResult<T> envuelve un IAsyncEnumerable<T>. Usa await foreach para pedir elementos y await using para liberar el resultado.

csharp
using Greencore.Platform.Errors;
using Greencore.Platform.Results;

await using var resultado = AsyncEnumerableResult<int>.Ok(GenerarAsync());
if (resultado.IsError)
{
    Console.WriteLine(resultado.Error.Message);
    return;
}
await foreach (var numero in resultado)
    Console.WriteLine(numero);

static async IAsyncEnumerable<int> GenerarAsync()
{
    for (var numero = 1; numero <= 3; numero++)
    {
        await Task.Yield();
        yield return numero;
    }
}

El envoltorio no materializa toda la secuencia: delega cada petición de avance al enumerador subyacente. La propia fuente puede tener su búfer o producción independiente.

Enumerar un fallo inicial lanza InvalidOperationException. Una excepción posterior del iterador se propaga durante la lectura y no cambia IsOk.

resultado, resultado.Value y la rama de éxito de Match acceden a la misma secuencia administrada.

Recuerda: el resultado puede estar listo ahora y sus elementos llegar después.

Siguiente: cancelar una lectura.

Uso personal limitado. Uso comercial sujeto a autorización escrita.