Почему вылетает это исключение? - C#
Формулировка задачи:
Здравствуйте.
В своем новом проекте, который содержит только одну кнопку и TreeView.
Это все содержит вот такой код (Только один класс с 2 методами - обработчиком клика на кнопку и алгоритмом заполнения TreeView):
Суть в том, что элемент TreeView заполняется данными из файла. И файлы эти могут занимать 100 - 200 МБ. Для того, чтобы прога не зависала, я решил сделать это заполнение в отдельном потоке. Сначала вылетало одно исключение, которое я пофиксил строчкой
Но теперь стала вылетать ошибка на тринадцатой строчке
Почему? Как ее исправить?
Заранее преблагодарен за помощь!
Листинг программы
- void TreeFill()
- {
- CheckForIllegalCrossThreadCalls = false;
- TreeNode AddFile(FileInfo file)
- {
- var dir = AddDirectory(file.Directory);
- return dir.Nodes.Add(file.Name);
- }
- TreeNode AddDirectory(DirectoryInfo dir)
- {
- var level = dir.Parent == null ? treeView1.Nodes : AddDirectory(dir.Parent).Nodes;
- return level[dir.Name] ?? level.Add(dir.Name, dir.Name);
- }
- using (StreamReader _SR = new StreamReader("Paths.txt", Encoding.UTF8))
- {
- string Line = null;
- while ((Line = _SR.ReadLine()) != null)
- {
- DirectoryInfo DI = new DirectoryInfo(Line);
- AddDirectory(DI);
- }
- _SR.Close();
- }
- button1.Enabled = true;
- }
- private void button1_Click(object sender, EventArgs e)
- {
- Thread _TreeFill = new Thread(TreeFill);
- _TreeFill.Start();
- button1.Enabled = false;
- }
Листинг программы
- CheckForIllegalCrossThreadCalls = false;
Листинг программы
- return level[dir.Name] ?? level.Add(dir.Name, dir.Name);
Решение задачи: «Почему вылетает это исключение?»
textual
Листинг программы
- if (treeView1.InvokeRequired)
- treeView1.Invoke(new Action(() => treeView1.Nodes.Add("", "")));
- else treeView1.Nodes.Add("", "");
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д