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

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

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

Здравствуйте. В своем новом проекте, который содержит только одну кнопку и TreeView. Это все содержит вот такой код (Только один класс с 2 методами - обработчиком клика на кнопку и алгоритмом заполнения TreeView):
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;
}
Суть в том, что элемент TreeView заполняется данными из файла. И файлы эти могут занимать 100 - 200 МБ. Для того, чтобы прога не зависала, я решил сделать это заполнение в отдельном потоке. Сначала вылетало одно исключение, которое я пофиксил строчкой
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("", "");

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


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

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

10   голосов , оценка 4.2 из 5
Похожие ответы