|
Добавить элементы в дерево без подвисания
|
|||
---|---|---|---|
#18+
Привет всем! У меня есть TreeView, который я заполнил списком директорий. Далее я открываю директорию C:\ и подгружаю в другом потоке с сервака список файлов (100 файлов). Далее через Dispatcher.BeginInvoke(new Action(() => AddFilesToTheTree(item, folder, _backupFileList))) я вызываю метод, который добавит список полученных с сервера файлов в директорию и покажет у клиента: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
Проблема в том, что когда эти 100 файлов (100 TreeViewItem-ов) добавляются в дерево, то приложение зависает секунд на 15. Вопрос - можно ли как-то по-другому добавить TreeViewItem-ы в дерево TreeView, чтобы приложение не висло? Через другой пото нельзя, т.к. Код: plaintext
... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2014, 15:14 |
|
Добавить элементы в дерево без подвисания
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2014, 17:59 |
|
Добавить элементы в дерево без подвисания
|
|||
---|---|---|---|
#18+
Код: c# 1. 2.
Всё равно зависает на этом месте ... |
|||
:
Нравится:
Не нравится:
|
|||
27.05.2014, 10:19 |
|
Добавить элементы в дерево без подвисания
|
|||
---|---|---|---|
#18+
Students Код: c# 1. 2.
Всё равно зависает на этом местезы: Что мешает использовать HierarhicalDataTemplate? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.05.2014, 10:33 |
|
Добавить элементы в дерево без подвисания
|
|||
---|---|---|---|
#18+
через HierarhicalDataTemplate очень долго переделывать, можно без него? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.05.2014, 10:43 |
|
Добавить элементы в дерево без подвисания
|
|||
---|---|---|---|
#18+
Можно. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.05.2014, 10:44 |
|
Добавить элементы в дерево без подвисания
|
|||
---|---|---|---|
#18+
Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20.
Вот код, приложение подвисает даже с DeferRefresh , когда добавляем элементы item.Items.Add(subitem) ... |
|||
:
Нравится:
Не нравится:
|
|||
27.05.2014, 10:47 |
|
Добавить элементы в дерево без подвисания
|
|||
---|---|---|---|
#18+
Students Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20.
Вот код, приложение подвисает даже с DeferRefresh , когда добавляем элементы item.Items.Add(subitem) см комментарий ... |
|||
:
Нравится:
Не нравится:
|
|||
27.05.2014, 10:52 |
|
Добавить элементы в дерево без подвисания
|
|||
---|---|---|---|
#18+
спасибо за ответ, но я не совсем понял. что означает "отключаем у TreeView"? "Добавляем в TreeViewItem" - да, добавляем: Код: plaintext
... |
|||
:
Нравится:
Не нравится:
|
|||
27.05.2014, 10:55 |
|
Добавить элементы в дерево без подвисания
|
|||
---|---|---|---|
#18+
если так: Код: c# 1. 2. 3. 4. 5.
то будет ошибка в item.Items.Add(subitem) : Код: plaintext
... |
|||
:
Нравится:
Не нравится:
|
|||
27.05.2014, 10:59 |
|
Добавить элементы в дерево без подвисания
|
|||
---|---|---|---|
#18+
Если я правильно понял ваш алгоритм, то он неверный, т.к. нельзя добавлять (и вообще изменять) items-ы во время выполнения метода DeferRefresh(), поэтому DeferRefresh() можно навесить только на сам TreeView, но будет зависать, т.е. не решит проблему ... |
|||
:
Нравится:
Не нравится:
|
|||
27.05.2014, 11:02 |
|
Добавить элементы в дерево без подвисания
|
|||
---|---|---|---|
#18+
up ... |
|||
:
Нравится:
Не нравится:
|
|||
27.05.2014, 11:23 |
|
Добавить элементы в дерево без подвисания
|
|||
---|---|---|---|
#18+
Studentsесли так: Код: c# 1. 2. 3. 4. 5.
то будет ошибка в item.Items.Add(subitem) : Код: plaintext
... |
|||
:
Нравится:
Не нравится:
|
|||
27.05.2014, 14:45 |
|
Добавить элементы в дерево без подвисания
|
|||
---|---|---|---|
#18+
нельзя, т.к. public ItemCollection Items { get; } можно добавлять item-ы через Add ... |
|||
:
Нравится:
Не нравится:
|
|||
27.05.2014, 16:46 |
|
Добавить элементы в дерево без подвисания
|
|||
---|---|---|---|
#18+
up ... |
|||
:
Нравится:
Не нравится:
|
|||
27.05.2014, 19:22 |
|
Добавить элементы в дерево без подвисания
|
|||
---|---|---|---|
#18+
up ... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2014, 10:27 |
|
Добавить элементы в дерево без подвисания
|
|||
---|---|---|---|
#18+
up ... |
|||
:
Нравится:
Не нравится:
|
|||
29.05.2014, 11:10 |
|
Добавить элементы в дерево без подвисания
|
|||
---|---|---|---|
#18+
Studentsнельзя, т.к. public ItemCollection Items { get; } можно добавлять item-ы через AddМожно, т. к. public IEnumerable ItemsSource { get; set; } можно добавлять item-ы сразу все. Быстрее способа, думаю, нет. Если не поможет, нужно будет думать в сторону частичной загрузки или виртуализации. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.05.2014, 12:05 |
|
Добавить элементы в дерево без подвисания
|
|||
---|---|---|---|
#18+
если через ItemsSource значит нужно переделывать TreeView с помощью HierarhicalDataTemplate, а без HierarhicalDataTemplate можно обойтись? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.05.2014, 12:47 |
|
Добавить элементы в дерево без подвисания
|
|||
---|---|---|---|
#18+
Studentsесли через ItemsSource значит нужно переделывать TreeView с помощью HierarhicalDataTemplate, а без HierarhicalDataTemplate можно обойтись?Что мешает присвоить ItemsSource "вручную"? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.05.2014, 13:34 |
|
Добавить элементы в дерево без подвисания
|
|||
---|---|---|---|
#18+
Если так, то да (не зависает): Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16.
но я добавляю в MyTreeView item-ы из TreeView , что неправильно, т.к. у MyTreeView это другой контрол с чекбоксами, картинками и т.д. если же: Код: c# 1. 2.
то тогда объект будет один и тот же и при collection.Add(subitem) будет зависать ... |
|||
:
Нравится:
Не нравится:
|
|||
29.05.2014, 14:47 |
|
Добавить элементы в дерево без подвисания
|
|||
---|---|---|---|
#18+
up ... |
|||
:
Нравится:
Не нравится:
|
|||
29.05.2014, 15:34 |
|
Добавить элементы в дерево без подвисания
|
|||
---|---|---|---|
#18+
Сделал через ItemSource: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17.
... |
|||
:
Нравится:
Не нравится:
|
|||
29.05.2014, 15:49 |
|
|
start [/forum/topic.php?fid=21&msg=38655971&tid=1441117]: |
0ms |
get settings: |
7ms |
get forum list: |
16ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
133ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
63ms |
get tp. blocked users: |
1ms |
others: | 292ms |
total: | 535ms |
0 / 0 |