سؤال

وهذا المشروع أنا على يستخدم عنصر 3rd الطرف لبناء ملفات PDF حيوية في نظام الويب VB.Net دعا ABCpdf.Net. (وليس أداة رهيبة، ولكنها ليست كبيرة سواء.)

وبين الحين والآخر، لأسباب لا أستطيع فهم، كائن المستند يلقي SEHException. حفر futher، اتضح سبب ذلك عن طريق استثناء مخصصة في كائن مستند من نوع WebSupergoo.ABCpdf6.Internal.PDFException. محتويات يحتوي فقط على العنوان لا -terribly-مفيدة "غير قادر على الحصول على بيانات الصورة. نفاد الذاكرة" عادة ما يحدث هذا عند محاولة إضافة صورة إلى PDF. وبما أن هذه الصور هي صور PNG أقل من 100K، وأنا على التخمين حجمها ليست القضية.

وأيضا، والشيء الغريب حقا هو أنه بمجرد أن تبدأ هذه المسألة يحدث، والطريقة الوحيدة للحصول عليه لوقف ويبدو أن لإعادة تشغيل خادم الويب، والتي من الواضح قليلا دون المستوى المطلوب.

وقد أي شخص في أي وقت مضى على هذه المشكلة (أو حتى استخدام هذه الأداة؟)

هل كانت مفيدة؟

المحلول 2

وتحديث، بعد ثلاثة أشهر:

وأقرب ما استطيع ان اقول، كانت مشاكل الذاكرة عن حل عندما كنا ترقية من ابكبدف 6 إلى 7. ويبدو أن النسخة 7 لم يعد كائن COM مع مجمع .NET، ولكن كل التعليمات البرمجية المدارة من القاع فوق. انها لا تزال غير أعظم مولد PDF هناك، ولكن يبدو أن مشاكل التخلص من الموارد قد تم حلها.

نصائح أخرى

ورائعة. كنت قد وصلنا إلى استنتاج هذا ما يجب أن يحدث. هل ما زلت استدعاء doc.Clear () في نهاية كتلة تستخدمه؟

وأنا لم أر وجه التحديد هذا الخطأ من قبل، ولكن لدينا مشاكل الذاكرة مع ABC PDF من قبل.

وقصة قصيرة طويلة هو أنه ليست قاعدة التعليمات البرمجية المدارة تماما، ولكن مجرد المجمع. NET حول النسخة COM الخاصة بهم. أن يقال، ونحن تتبع لدينا مشكلة استخدام الذاكرة للا يتخلصون من الأشياء بشكل صحيح.

وهكذا، بدلا من:


Dim doc As New Doc()
'etc...

وقيام بذلك:


    Dim doc as Doc
    Using doc As New Doc()
      'etc...
    End Using
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top