Parallel.ForEach - 系统内存异常

时间:2014-03-13 10:43:48

标签: multithreading c#-4.0 memory-leaks garbage-collection out-of-memory

我的网站抓取工具有问题,因为在抓取大约700个网址后,我收到系统内存异常。内存使用率从一开始就提高,一瞬间程序就停止了。

这是一个用C#编写的控制台应用程序。

我认为问题是我在每个foreach循环中实例化了6个新对象。比我通过它们,用反射获取属性值并创建我用于DB保存的最终对象。

我希望.NET能够在不再使用它们时销毁这些对象,但事实并非如此。我有什么选择? BAckground Worker更好吗?

我的代码是这样的......

       Parallel.ForEach(Globals.Urls, url =>
        {

            progCtrl.indexIsSet = false;

            var urlHelper = url.Split(';')[1].TrimStart('\t');
           // var urlHelper = Globals.replaceGermanUmlauts(url.Split(';')[1].TrimStart('\t'));
            HtmlDocument htm = new HtmlDocument();

            try
            {
                Company comp0 = new Company();
                Company comp1 = new Company();
                Company comp2 = new Company();
                Company comp3 = new Company();
                Company comp4 = new Company();
                Company comp5 = new Company();
                Company comp6 = new Company();


//then I do some logic, add those companies to list and go further.

如何毁灭他们?我试过让它们成为IDisposable但是没有用。

感谢。

0 个答案:

没有答案