Общее исключение GDI +, сопровождаемое исключением OutOfMemory - PullRequest
0 голосов
/ 02 сентября 2011

Я работаю над приложением VB.Net WinForms. Это приложение показывает строки производственных линий, которые пользователь будет проходить по строкам и распечатывать пакет документов ActiveReports. Этот пакет может содержать до 9 отчетов. Пакет выбирается и отправляется на печать, а затем отправляется непосредственно на принтер по умолчанию на аппарате с использованием механизма ActiveReports:

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

В этих отчетах также используются изображения, извлеченные из файловой системы. Когда они быстро бегают по строкам, они иногда сталкиваются с:

A generic error ocurred in GDI+

Затем следует:

Exception of type "System.OutOfMemoryException" was thrown.

Это приводит к тому, что некоторые документы не печатаются, и они должны вернуться и выяснить, какие из них не были напечатаны. Я знаю, что машине не хватает памяти, поэтому я предполагаю, что память принтера заполняется, или отчеты пытаются использовать одно и то же изображение при печати и вызывают там проблему.

Если память принтера заполняется, есть ли способ замедлить добавление документов в очередь печати или хотя бы приостановить ожидание свободного места? Я в растерянности и буду признателен за любые предложения.

Спасибо.

1 Ответ

1 голос
/ 07 октября 2011

Я решил просто использовать возможность кэширования, встроенную в ActiveReports. Это, казалось, облегчило некоторые проблемы с принтером. Я также добавил некоторое замедление потока, чтобы убедиться, что память очищается перед добавлением большего количества документов в очередь печати. Спасибо.

...