c#Parallel ForEach索引超出范围

时间:2018-03-04 19:09:30

标签: c# indexing foreach parallel-processing

我试图通过让每个循环为每个循环并行来提高我的webscraping应用程序的速度。

        public List<MovieTVInformation> ViewMovies()
    {
        List<MovieTVInformation> AllFoundMovies = new List<MovieTVInformation>(100);
        HtmlWeb website = new HtmlWeb();
        HtmlDocument doc = website.Load("http://www.imdb.com/chart/moviemeter");

        var MovieNames = doc.DocumentNode.SelectNodes("//*[@id='main']/div/span/div/div/div[3]/table/tbody/tr/td[2]").ToList();
        var ImageLocation = doc.DocumentNode.SelectNodes("//*[@id='main']/div/span/div/div/div[3]/table/tbody/tr/td[1]/a").ToList();
        var IMDBLinks = doc.DocumentNode.SelectNodes("//*[@id='main']/div/span/div/div/div[3]/table/tbody/tr/td[2]/a").ToList();

        Parallel.ForEach(MovieNames, (name, state, index) =>
        {
            if (index > 0 && index < 99)
            {

                AllFoundMovies.Add(new MovieTVInformation());

                var TempName = name.InnerText;
                TempName = AdjustName(TempName, Convert.ToInt32(index));
                AllFoundMovies[Convert.ToInt32(index)].Name = TempName;
            }
        });

        return AllFoundMovies;
}

我的问题是每次给出负的错误索引错误时索引超出范围。我添加了一个IF语句,看看是否会阻止它超出范围(因为列表只有100个条目),但仍然没有成功。

任何人都可以让我知道我可能做错了什么,

感谢

0 个答案:

没有答案