Здравствуйте, Pavel Dvorkin, Вы писали:
PD>Где показывать ? Сколько в окне показывать (не миллион же!). И как показывать — последовательно или в произвольном порядке, то есть с произвольным скроллингом ?
По сути, у меня что то вроде эксплорера. Есть дерево каталогов (директориев) и пользователь просто клацает по директориям и хочет посмотреть что в них лежит. Понятно, что я не показываю все миллионы файлов за раз, но нужна быстрая реакция при выборе директория и возможность прервать загрузку. А сейчас это выглядит так — пользователь кликает на директорий и приложение "задумывается" на очень долго, т.к пока Directory.GetFiles все не вычитает, нам показывать нечего
PD>Начинаешь Directory.EnumerateFiles в отдельном потоке, заносишь данные в какой-то ArrayList с большой начальной емкостью (чтобы избежать насколько можно переаллокаций) и сразу же показываешь то, что поместилось в окне. Пока пользователь листает вперед, ArrayList дозаполняется.
PD>Увы, если надо показывать в произвольном порядке, это не пройдет — там лишь IEnumerable.
Сейчас взял IAsyncEnumerable и вот отсюда код, как идею
https://github.com/dotnet/runtime/issues/809