|
0 / 0 / 0
Регистрация: 02.09.2012
Сообщений: 37
|
|
Заполнение TreeView деревом папок на ПК. Как избежать зависаний формы02.09.2012, 15:40. Показов 6233. Ответов 8
Метки нет (Все метки)
Всем привет, у меня такой вопрос:
Есть приложение WindofsForms на нем элемент TreeView. При загрузке формы в нем отображаются жесткие диски и их файлы и папки. Поскольку их много, то форма блокируется до окончания операции. Подскажите плиз как можно сделать заполнение асинхронным без блокировки формы Спасибо.
0
|
|
| 02.09.2012, 15:40 | |
|
Ответы с готовыми решениями:
8
Обход всех папок и заполнение TreeView
|
|
Почетный модератор
23249 / 9161 / 1084
Регистрация: 11.04.2010
Сообщений: 11,014
|
|
| 02.09.2012, 19:23 | |
|
vadimka1234, может очередной узел заполнять только при клике по нему? И не на всю вложенность подкаталогов, а только первого уровня?
0
|
|
|
0 / 0 / 0
Регистрация: 02.09.2012
Сообщений: 37
|
|
| 02.09.2012, 20:11 [ТС] | |
|
Как вариант думаю да. Но все равно хотелось бы понять как это сделать именно первым способом. Опыт у меня не большой. Я это себе представлял примерно так: Создать дополнительный поток и в нем вызывать функцию для формирования treeview через Control.BeginInvoke, но все равно форма остаются залоченой. Может быть можно как-то по другому, поскольку я такое уже видел в других приложениях.
0
|
|
|
0 / 0 / 0
Регистрация: 02.09.2012
Сообщений: 37
|
|||||||||||
| 03.09.2012, 12:18 [ТС] | |||||||||||
|
Кажется это то,что нужно спасибо всем, буду пробовать.
Добавлено через 15 часов 47 минут К сожалению DoEvents не подошло так как из-за него форма мирцает, поэтому я стал делать так Для формирования дерева я использую следующую функцию- она рекурсивно пробегает все каталоги на дисках компьютера, для обновления UI использую функцию tree_update(см ниже)
функция tree_update
В результате дерево формируется но UI блокируется. Почему так происходит? Спасибо.
0
|
|||||||||||
|
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
|
||||||
| 03.09.2012, 21:19 | ||||||
|
Формируйте родительскую ноду (а-ля Мой Компьютер) в отдельном потоке, а в основном всего лишь цепляйте ее к дереву.
Удобнее всего это делать с помощью BackgroundWorker'a:
1
|
||||||
|
0 / 0 / 0
Регистрация: 02.09.2012
Сообщений: 37
|
||||||||||||||||
| 04.09.2012, 13:42 [ТС] | ||||||||||||||||
|
Насколько я понимаю в данном случае форма блокироваться не будет, но дерево будет оставаться пустым до окончания операции, поэтому я стал использовать ProgressChanged. Если я все правильно понял, то в обработчике DoWork у меня формируется дерево:
Вот эти функции:
Спасибо.
0
|
||||||||||||||||
|
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
|
||
| 04.09.2012, 13:44 | ||
|
Лучше добавьте прогресс бар и обновляйте его - чтобы пользователь видел, что идет некая работа.
0
|
||
|
0 / 0 / 0
Регистрация: 02.09.2012
Сообщений: 37
|
|
| 04.09.2012, 16:38 [ТС] | |
|
Наверное вы правы, я уже реализовал по другому. Хотелось бы уже чисто для академических познаний понять как сделать именно таким способом. Проблема в том что я не знаю как передать узел созданный в одном потоке- дереву в другом.
Спасибо
0
|
|
| 04.09.2012, 16:38 | |
|
Помогаю со студенческими работами здесь
9
DataGridView: заполнение в отдельном потоке во избежание зависаний Как избежать назначения владельцем файлов/папок при смене ж. дисков Как в Treeview добавить отображение папок
Как избежать повторной отправки формы? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net
REST сервисы временно не работают, только через Web.
Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
|
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
|
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
|
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма).
На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
|
|
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ *
Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи
и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
|
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым.
Но восстановить их можно так.
Для этого понадобится консольная утилита. . .
|
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
|
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11
— это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
|