Предоставление обратной связи с пользователем во время запроса LINQ - PullRequest
3 голосов
/ 08 февраля 2012

У меня есть несколько запросов LINQ, которые будут собирать записи (до миллиона) на основе различных фильтров, и управление будет изменено в зависимости от значений отдельных столбцов в результирующих отфильтрованных элементах строки.Я хотел бы реализовать многопоточность, но я использую LINQ для выполнения запроса, а сам запрос является источником задержки, поэтому я считаю, что индикатор выполнения в любом случае мгновенно скачет с 0 до 100%.Есть ли способ преодолеть это?

Конкретным примером является то, что элементы ComboBox для Windows Forms заполняются на основе различных значений выбранного пользователем столбца из другого ComboBox.Эти элементы используются для динамического построения другого запроса linq, который используется для пользовательского инструмента динамического построения диаграмм.

Ответы [ 2 ]

3 голосов
/ 09 февраля 2012

Используйте Skip и Take, чтобы загрузить только несколько записей одновременно. Если вы получили Count раньше времени, вы можете продвигать индикатор выполнения после завершения каждого запроса. Вам нужно будет сделать все это в фоновом потоке, чтобы пользовательский интерфейс реагировал так, чтобы индикатор выполнения отображал обновления.

2 голосов
/ 09 февраля 2012

Я хотел бы реализовать многопоточность, но я использую LINQ для выполнения запроса, а сам запрос является источником задержки, поэтому я считаю, что индикатор выполнения в любом случае мгновенно скачет с 0 до 100%.

Таким образом, основная часть - это запрос, выполняемый на БД.Здесь нет обратной связи, вам придется подделать его.Вы не будете единственным, кто делает это.

Индикатор выполнения не является (предназначенным для) точным инструментарием, все дело в усмирении пользователя.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...