2011-09-08 162 views
0

我有一个非常简单的应用程序,我们为它提供了一个我们的网站列表,并且它对它们做了一个并行的foreach,并在每个动作内部做了一个http post。异常未被捕获

类似如下:

static int success = 0 
static void Main(string[] args) { 
    try { 
     Parallel.ForEach(sites, site=> { 
      try{ 
       if(DoWebPost(site)) { 
        Console.Write("Posted {0} - {1}", ++success, site); 
       } 
      } catch {} 
     }); 
    } catch {} 
} 

我想不通为什么它会抛出一个OutOfMemoryException,更不用说为什么会导致整个应用程序崩溃,而不仅仅是赶上并继续。

编辑:不完全确定发生异常的位置,因为它不在本地,只有在生产环境中运行时......意味着没有调试可用。该应用程序是64位,并且很少使用超过100兆。

+0

有一些无法捕捉的例外。 (如果我没有记错,它们会被捕获并自动重新生成,并且机制是运行时在第一次抛出异常时设置了某个标志,表明它应该被重新抛出)。失去管理内存就是其中之一。 – CodesInChaos

+1

您会如何期望从内存不足错误中继续? – dlev

+1

如果你内存不足,运行时应该做什么?捕捉异常有什么帮助?您仍然内存不足,因此应用程序崩溃... –

回答

0

您提到的发布的代码与您使用的代码有点相同。 你真的可以发布完整的代码或导致此问题的确切代码吗? 东西告诉我你有某种内存泄漏,你首先需要解决这个问题。

+0

不幸的是,即使在相同的参数下,它也不会每次都这样做。我所做的只是重新运行应用程序,而且它可以工作,但我不想照看它。 –