Почему вылетает это исключение? - 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("", "");