我有一个非常简单的应用程序,我们为它提供了一个我们的网站列表,并且它对它们做了一个并行的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兆。
有一些无法捕捉的例外。 (如果我没有记错,它们会被捕获并自动重新生成,并且机制是运行时在第一次抛出异常时设置了某个标志,表明它应该被重新抛出)。失去管理内存就是其中之一。 – CodesInChaos
您会如何期望从内存不足错误中继续? – dlev
如果你内存不足,运行时应该做什么?捕捉异常有什么帮助?您仍然内存不足,因此应用程序崩溃... –