Являются ли IQueryable и IQueryable <T>асинхронными? - PullRequest
0 голосов
/ 21 ноября 2018

Являются ли интерфейсы IQueryable и IQueryable<T> асинхронными?

Я имею в виду следующий код:

void Method()
{
    var customers = CustomerReposity.ToQueryable(); //The execution of query starts here.

    DoSomething();

    foreach (var customer in customers) // The foreach await to finish
        customer.DoSomething();
}

Верно ли мое предположение?Если нет, то какова правильная форма для достижения асинхронного поведения?

Может быть ...

async void Method()
{
    var customers = CustomerReposity.ToQueryable().ToListAsync(); //The execution of query starts here.

    DoSomething();

    foreach (var customer in await customers) // The foreach await to finish
        customer.DoSomething();
}

Это хорошая идея?

1 Ответ

0 голосов
/ 21 ноября 2018

Нет, IQueryable и IQueryable<T> не являются асинхронными, и они не должны быть.Эти два интерфейса предоставляют средства для извлечения некоторых данных из источника, но это зависит от источника, чтобы обеспечить асинхронную поддержку.Если источник вернет все данные в памяти, использовать его асинхронно бессмысленно.Однако если источник «потоковый» из сети, то, возможно, имеет смысл перечислить его асинхронно.

...