C #, WPF: работа над каждым элементом в списке - PullRequest
0 голосов
/ 02 июня 2011

У меня есть приложение WPF с контролем списка. Приложение в основном загружает файл в виде списка. Затем я хочу перебрать каждый элемент списка, выделив текущую строку и выполнив определенную задачу.

Когда задача выполнена, я обновляю другой файл и панель с результатами и перехожу к следующему элементу списка.

Я уже делал подобные вещи в WinForms, но я довольно зеленый, когда дело доходит до WPF. Я предполагаю, что моя главная проблема заключается в том, как обрабатывать второй поток, кроме потока пользовательского интерфейса. Отличается ли модель потоков в WPF?

Во-вторых, программа представляет собой цикл по ObservableCollection:

for (int i = 0 ; i < Collection.Count; i++)
{
   HighlightCurrentRowInListView();
   Collection[i].DoWork();
   PostWorkToPanel();

   // Bad loop around code
   if (i == (Collection.Count - 1))
   { i = -1; }
}

Если я внесу изменение в коллекцию (которая является ObservableCollection), как будет обновляться цикл? Какой метод итераций лучший, foreach, .ForEach (x => x) для этого контекста? Программа должна продолжаться до тех пор, пока не будет нажата кнопка «СТОП» или что-то еще.

1 Ответ

1 голос
/ 02 июня 2011

Если вам нужна информация о модели потоков, см. Соответствующую страницу MSDN .

Поскольку у вас есть наблюдаемая коллекция, вы можете обработать событие CollectionChanged,Вы можете видеть, были ли элементы добавлены или удалены, так что вы можете добавлять или удалять их из рабочей очереди, из которой можно просто брать элементы, пока она не станет пустой (while -loop).

Чтобы изменить элементы интерфейсафоновый поток, который вам нужно использовать Dispatcher, см. ссылку на модель потоков, которую я дал для справки по этой теме.

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