Почему вылетает это исключение? - 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("", "");
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д