Ожидание завершения threadpool - где ошибка - C#

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

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

Добрый день! Есть массив файлов aFiles, который хочу обработать методом check() через ThreadPool. При этом мне нужно, чтобы программа подождала завершения всех процессов. Пишу:
    int c = 0;
    int FilesCount = aFiles.Length;
 
    DateTime dtStart = DateTime.Now;
    var handles = new ManualResetEvent[FilesCount];
    foreach (string file in aFiles)
    {
        handles[c] = new ManualResetEvent(false);
        c++;
 
        var currentHandle = handles[c];
        ThreadPool.QueueUserWorkItem(arg =>
        {
            try
            {
                Check((object)file);
            }
            finally { currentHandle.Set(); }
        });
    }
 
    WaitHandle.WaitAll(handles);
Но на строчке:
var currentHandle = handles[c];
выдает, что индекс находится за пределами массива. Подскажите, что неправильно в коде?

Решение задачи: «Ожидание завершения threadpool - где ошибка»

textual
Листинг программы
WaitHandle.WaitAll(handles);

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


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

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

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