2011-09-08 242 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

不幸的是,即使在相同的參數下,它也不會每次都這樣做。我所做的只是重新運行應用程序,而且它可以工作,但我不想照看它。 –