Использование фонового работника - обновление ProgressBar о прогрессе рекурсивного метода

Ниже приведен метод, который я хочу отправить в фоновый рабочий, но я изо всех сил пытаюсь сделать это, основываясь на том, как был создан мой метод. Как вы можете, он не возвращает ничего, что в порядке, но он ожидает объект 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 был невероятно эффективен после нескольких настроек, и очень быстро предоставил информацию о размере текущей поставляемой папки, но, опять же, я использую довольно мощную машину разработчика, так что это может быть не так для всех пользователей.

Спасибо за чтение, надеюсь, кто-то может помочь!

Ответы на вопрос(3)

Ваш ответ на вопрос