У меня есть эта функция, которая берет путь и ищет файл в нем. У меня есть два подхода: один заключается в том, чтобы основной поток выполнял задание, а другой - для того, чтобы рабочий поток выполнял эту работу. Когда основной поток выполняет задание, он возвращает все файлы, но когда рабочий поток выполняет задание, он возвращает только небольшое количество файлов только в этом пути. Он не выполняет этап рекурсии, который входит в подкаталоги. Вот код:Threading and Recursion in C#
public void GetAllFiles(string sdir)
{
foreach (string dir in Directory.GetDirectories(sdir))
{
try
{
foreach (string file in Directory.GetFiles(dir, "*.*"))
{
string filename = Path.GetFileName(file);
listView1.Items.Add(filename);
}
GetAllFiles(dir);
}
catch (Exception error)
{
Console.WriteLine(error.Message);
}
}
}
и вот как я называю тему:
Thread thread = new Thread(() => GetAllFiles("C:\\Users\\modz\\Desktop\\games"));
thread.Start();
В чем вопрос? –
@ScottHunter Мне нужно знать, что вызывает это, но я думаю, что это рекурсия – mohamed
Я подозреваю, что вы получаете сообщение об ошибке. Это связано с тем, что вы пытаетесь добавить элементы в объект ListView. Это неверно для любого потока, кроме потока, в который был создан ListView. Вы проверили, не были ли какие-либо ошибки записаны на консоль? –