|
|
|
Добавить элементы в дерево без подвисания
|
|||
|---|---|---|---|
|
#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:33 |
|
||
|
Добавить элементы в дерево без подвисания
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2014, 17:59:14 |
|
||
|
Добавить элементы в дерево без подвисания
|
|||
|---|---|---|---|
|
#18+
Код: c# 1. 2. Всё равно зависает на этом месте ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.05.2014, 10:19:24 |
|
||
|
Добавить элементы в дерево без подвисания
|
|||
|---|---|---|---|
|
#18+
Students Код: c# 1. 2. Всё равно зависает на этом местезы: Что мешает использовать HierarhicalDataTemplate? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.05.2014, 10:33:03 |
|
||
|
Добавить элементы в дерево без подвисания
|
|||
|---|---|---|---|
|
#18+
через HierarhicalDataTemplate очень долго переделывать, можно без него? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.05.2014, 10:43:20 |
|
||
|
Добавить элементы в дерево без подвисания
|
|||
|---|---|---|---|
|
#18+
Можно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.05.2014, 10:44:16 |
|
||
|
Добавить элементы в дерево без подвисания
|
|||
|---|---|---|---|
|
#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:32 |
|
||
|
Добавить элементы в дерево без подвисания
|
|||
|---|---|---|---|
|
#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:40 |
|
||
|
Добавить элементы в дерево без подвисания
|
|||
|---|---|---|---|
|
#18+
спасибо за ответ, но я не совсем понял. что означает "отключаем у TreeView"? "Добавляем в TreeViewItem" - да, добавляем: Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.05.2014, 10:55:58 |
|
||
|
Добавить элементы в дерево без подвисания
|
|||
|---|---|---|---|
|
#18+
если так: Код: c# 1. 2. 3. 4. 5. то будет ошибка в item.Items.Add(subitem) : Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.05.2014, 10:59:52 |
|
||
|
Добавить элементы в дерево без подвисания
|
|||
|---|---|---|---|
|
#18+
Если я правильно понял ваш алгоритм, то он неверный, т.к. нельзя добавлять (и вообще изменять) items-ы во время выполнения метода DeferRefresh(), поэтому DeferRefresh() можно навесить только на сам TreeView, но будет зависать, т.е. не решит проблему ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.05.2014, 11:02:33 |
|
||
|
Добавить элементы в дерево без подвисания
|
|||
|---|---|---|---|
|
#18+
up ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.05.2014, 11:23:50 |
|
||
|
Добавить элементы в дерево без подвисания
|
|||
|---|---|---|---|
|
#18+
Studentsесли так: Код: c# 1. 2. 3. 4. 5. то будет ошибка в item.Items.Add(subitem) : Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.05.2014, 14:45:31 |
|
||
|
Добавить элементы в дерево без подвисания
|
|||
|---|---|---|---|
|
#18+
нельзя, т.к. public ItemCollection Items { get; } можно добавлять item-ы через Add ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.05.2014, 16:46:17 |
|
||
|
Добавить элементы в дерево без подвисания
|
|||
|---|---|---|---|
|
#18+
up ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.05.2014, 19:22:53 |
|
||
|
Добавить элементы в дерево без подвисания
|
|||
|---|---|---|---|
|
#18+
up ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2014, 10:27:07 |
|
||
|
Добавить элементы в дерево без подвисания
|
|||
|---|---|---|---|
|
#18+
up ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2014, 11:10:07 |
|
||
|
Добавить элементы в дерево без подвисания
|
|||
|---|---|---|---|
|
#18+
Studentsнельзя, т.к. public ItemCollection Items { get; } можно добавлять item-ы через AddМожно, т. к. public IEnumerable ItemsSource { get; set; } можно добавлять item-ы сразу все. Быстрее способа, думаю, нет. Если не поможет, нужно будет думать в сторону частичной загрузки или виртуализации. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2014, 12:05:25 |
|
||
|
Добавить элементы в дерево без подвисания
|
|||
|---|---|---|---|
|
#18+
если через ItemsSource значит нужно переделывать TreeView с помощью HierarhicalDataTemplate, а без HierarhicalDataTemplate можно обойтись? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2014, 12:47:53 |
|
||
|
Добавить элементы в дерево без подвисания
|
|||
|---|---|---|---|
|
#18+
Studentsесли через ItemsSource значит нужно переделывать TreeView с помощью HierarhicalDataTemplate, а без HierarhicalDataTemplate можно обойтись?Что мешает присвоить ItemsSource "вручную"? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2014, 13:34:11 |
|
||
|
Добавить элементы в дерево без подвисания
|
|||
|---|---|---|---|
|
#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:49 |
|
||
|
Добавить элементы в дерево без подвисания
|
|||
|---|---|---|---|
|
#18+
up ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2014, 15:34:49 |
|
||
|
Добавить элементы в дерево без подвисания
|
|||
|---|---|---|---|
|
#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:25 |
|
||
|
|

start [/forum/topic.php?fid=21&msg=38652857&tid=1441117]: |
0ms |
get settings: |
12ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
53ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
72ms |
get tp. blocked users: |
1ms |
| others: | 207ms |
| total: | 377ms |

| 0 / 0 |
