2011-09-01 125 views
0

我正在研究VB.Net WinForms應用程序。這個應用程序顯示生產線的行,用戶將逐行下去並打印一個ActiveReports文檔包。該軟件包最多可以包含9個報告。封裝選擇,並告訴打印,然後它被直接使用的ActiveReports'機制發送到機器的默認打印機:通用GDI +異常後跟OutOfMemory異常

rpt.Document.Print(False, False, True) 

這些報告也使用圖片來自文件系統中拔出。當他們通過行快速運行,他們有時會遇到:

A generic error ocurred in GDI+ 

然後依次爲:

Exception of type "System.OutOfMemoryException" was thrown. 

這將導致某些文件無法打印,他們必須回去,並找出哪些沒」打印。我知道機器沒有內存不足,因此我的假設是打印機內存已滿,或者打印時報告嘗試使用相同的圖像,並導致出現問題。

如果打印機內存已滿,有什麼辦法可以減慢向打印隊列添加文檔,或者至少暫停等待空間?我有點不知所措,並希望有任何建議。

謝謝。

+1

請與供應商聯繫以獲得支持。 –

+0

我也向他們發送了支持電子郵件,並且仍在等待回覆。我將嘗試睡眠包之間的線程,以查看是否可能會等待某些打印機內存清除。我也在考慮將報告保存爲PDF,然後將它們發送到打印機。我可以使用Adobe SDK將PDF從文件直接發送到打印機嗎? –

+0

您能否爲「GDI +中發生的通用錯誤」錯誤提供一個調用堆棧?這將有助於隔離問題。 –

回答

1

我決定只使用ActiveReports內置的緩存功能。這似乎減輕了打印機的一些問題。我還添加了一些減慢線程的操作,以確保在將更多文檔添加到打印隊列之前清除內存。謝謝。