2013-10-04 57 views
1

如何避免異常.NET Filestream.Write()方法生成異常存在的系統資源不足以完成請求的服務。怎麼解決?

系統資源不足以完成請求的服務。

我正在使用此代碼編寫一個190MB的PDF文檔,其中this.outputPDF是大PDF的路徑,而dataToFile是發生異常時已存在於內存中的一組數據。

 using (FileStream fsFileSigned = new FileStream(this.outputPDF, FileMode.Create, FileAccess.Write)) 
     { 
      fsFileSigned.Write(dataToFile, 0, dataToFile.Length); 
      fsFileSigned.Close(); 
     } 

這是一個Windows服務運行在Windows Server 2008 64位與2Gb內存。

+0

這是一個低級的Windows錯誤,通常是由內核內存池耗盡造成的。處理泄漏可能是一個原因,或者機器嚴重超載。運行只有2 GB內存的64位服務器肯定沒有幫助。 –

回答

2

您的系統規格說明它可能資源不足,但這只是一個模糊的猜測......如果您真的想在這些約束條件下執行此操作,您可能需要以可管理的塊寫入文件。

只需以追加模式打開輸出文件,並一次性寫入(可以說)5 MB的數據並關閉它。繼續重複此操作,直到所有數據都被追加。與原始單寫方法相比,這可能會非常慢,但它可能在低資源情況下工作。

相關問題