Ниже приведен метод, который я хочу отправить в фоновый рабочий, но я изо всех сил пытаюсь сделать это, основываясь на том, как был создан мой метод. Как вы можете, он не возвращает ничего, что в порядке, но он ожидает объект directoryInfo при каждом вызове.
private void getSizeForTargetDirectory(DirectoryInfo dtar)
{
// generate a collection of objects. files comes first and then directories.
foreach (Object item in collection )
{
if (item == file)
{
track the size of the files as you encounter.
}
else if (item == directory)
{
// found a new directory, recall the method. !!!
}
}
}
Это мой первый раз, когда я работаю в фоновом режиме, поэтому я немного застрял, я попытался реализовать что-то благодаря помощи, найденной здесь, но застрял, когда понял, что мой метод рекурсивен.
Как отобразить прогресс во время цикла занятости?
Я реализовал метод обработчика событий doWork, но заметил, что мне нужно каким-то образом вызвать метод, если у меня будет больше файлов и папок для обработки на более низких подуровнях.
У меня есть простой обработчик события нажатия кнопки, который вызывает мой метод getSizeForTargetDirectory (), когда текущий выбранный узел является каталогом.
private void retrieveInfoButton_Click(object sender, EventArgs e)
{
// check to see if the path is valid
// reset the labels and textfields.
string fullPath = treeDrives.SelectedNode.FullPath;
string sNodesName = treeDrives.SelectedNode.Text;
if (directory) // Enter here if its a directory.
{
string parentPath = treeDrives.SelectedNode.Parent.FullPath;
DirectoryInfo[] dirArray = populateFoldersArray(parentPath);
for (int i = 0; i < dirArray.Length; i++)
{
if (dirArray[i].Name == sNodesName)
{
getSizeForTargetDirectory(dirArray[i]);
// do work !
Надеюсь, это объясняет, что я пытаюсь сделать и как я это делаю. Вопрос в том, как я могу использовать функцию выполнения отчетов в фоновом рабочем классе, когда основная часть работы, которую я пытаюсь выполнить, исходит из рекурсивного метода.
В ходе раннего тестирования я заметил, что мой метод getSize был невероятно эффективен после нескольких настроек и сообщил о размере информации для текущей поставляемой папки очень быстро, но с другой стороны, я использую довольно мощную машину разработчика, так что это может быть не так для всех пользователей.
Спасибо за чтение, надеюсь, кто-то может помочь !!!