| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Разработка Windows Forms > Заполнение listview в фоновом потоке. |
| Автор: VeryWell 2.9.2009, 19:22 | ||
| Всем привет! Описание ситуации: Я написал процедуру, которая сканирует жесткий диск на наличие определенных файлов, а затем выводит содержимое этих файлов в контрол listView. Поскольку обе части моей программы (и сканирование диска и занесение строк файла в listView) работают длительное время, её необходимо выполнять в фоновом потоке.
Если поместить эту процедуру в поток, то выдается ошибка компиляции, смысл которой в том, что из потока не виден контрол listView формы. Соответственно использование BackgroundWorker'a аналогичное с аналогичным результатом. Собственно вопрос в следующем: Можно как-то передать в поток контрол listView, потому что переделывать процедуру, добавляя к ней выход в виде массива ListViewItem'ов не желательно? Может быть нужно как-то по-другому помещать процедуру в поток? |
| Автор: Heinzz 2.9.2009, 20:02 | ||
Ну а вы листбокс передавайте |
| Автор: VeryWell 3.9.2009, 14:43 | ||
| Спасибо за пример с пулом, я попробовал аналогично испаивть BackgroundWorker и получил следующий эксепшен: Cross-thread operation not valid: Control 'textBox1' accessed from a thread other than the thread it was created on. Вот код:
Как это пересилить? |
| Автор: VeryWell 3.9.2009, 15:08 | ||
| Все разобрался. Неверная технология использования контрола Background. Вот как правильно:
всем спасибо |