Почему вылетает это исключение? - C#

Узнай цену своей работы

Формулировка задачи:

Здравствуйте. В своем новом проекте, который содержит только одну кнопку и TreeView. Это все содержит вот такой код (Только один класс с 2 методами - обработчиком клика на кнопку и алгоритмом заполнения TreeView):
Листинг программы
  1. void TreeFill()
  2. {
  3. CheckForIllegalCrossThreadCalls = false;
  4. TreeNode AddFile(FileInfo file)
  5. {
  6. var dir = AddDirectory(file.Directory);
  7. return dir.Nodes.Add(file.Name);
  8. }
  9. TreeNode AddDirectory(DirectoryInfo dir)
  10. {
  11. var level = dir.Parent == null ? treeView1.Nodes : AddDirectory(dir.Parent).Nodes;
  12. return level[dir.Name] ?? level.Add(dir.Name, dir.Name);
  13. }
  14. using (StreamReader _SR = new StreamReader("Paths.txt", Encoding.UTF8))
  15. {
  16. string Line = null;
  17. while ((Line = _SR.ReadLine()) != null)
  18. {
  19. DirectoryInfo DI = new DirectoryInfo(Line);
  20. AddDirectory(DI);
  21. }
  22. _SR.Close();
  23. }
  24. button1.Enabled = true;
  25. }
  26. private void button1_Click(object sender, EventArgs e)
  27. {
  28. Thread _TreeFill = new Thread(TreeFill);
  29. _TreeFill.Start();
  30. button1.Enabled = false;
  31. }
Суть в том, что элемент TreeView заполняется данными из файла. И файлы эти могут занимать 100 - 200 МБ. Для того, чтобы прога не зависала, я решил сделать это заполнение в отдельном потоке. Сначала вылетало одно исключение, которое я пофиксил строчкой
Листинг программы
  1. CheckForIllegalCrossThreadCalls = false;
Но теперь стала вылетать ошибка на тринадцатой строчке
Листинг программы
  1. return level[dir.Name] ?? level.Add(dir.Name, dir.Name);
Почему? Как ее исправить? Заранее преблагодарен за помощь!

Решение задачи: «Почему вылетает это исключение?»

textual
Листинг программы
  1. if (treeView1.InvokeRequired)
  2.                 treeView1.Invoke(new Action(() => treeView1.Nodes.Add("", "")));
  3.             else treeView1.Nodes.Add("", "");

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 4.2 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы