सिस्टम: विंडोज एक्सपी एसपी 3, .NET 3.5, 4 जीबी रैम, डुअल 1.6 जीएचजेआप कैसे सुनिश्चित करते हैं कि डब्ल्यूपीएफ मेमोरी से बड़े बिटमैप स्रोत जारी करता है?
मेरे पास एक WPF एप्लिकेशन है जो लोड और संक्रमण (स्टोरीबोर्ड एनिमेशन का उपयोग करके) बहुत बड़े पीएनजी है। संकल्प में ये पीएनजी 8190x1080 हैं। जैसे ही एप्लिकेशन चलता है, यह छवियों को कैश करने के लिए प्रतीत होता है और सिस्टम मेमोरी धीरे-धीरे बढ़ जाती है। आखिरकार यह सिस्टम को चकित करता है और आउटऑफमेमरी अपवाद फेंकता है।
1) मैं एप्लिकेशन
2) मैं कोई नहीं करने के लिए BitmapSource BitmapCacheOption की स्थापना कर रहा हूँ जब मैं लोड से BitmapSource तत्वों को हटा कर रहा हूँ:
ये कदम उठाएँ मैं वर्तमान में हल करने के लिए इस प्रयास करने के लिए ले रहा हूँ कर रहे हैं BitmapSource
3) मैं BitmapSource बर्फ़ीली रहा एक बार यह भरा हुआ है।
4) मैं छवि स्रोत के साथ ही स्रोत से ही कोई भी संदर्भ का उपयोग करता है के सभी संदर्भ को हटाने कर रहा हूँ।
5) ऊपर दिए गए चरणों के बाद मैन्युअल रूप से जीसी.कोलेक्ट() को कॉल करना पूरा हो गया है।
क्यों WPF इन छवियों के लिए स्मृति और एक संभव समाधान पर व्यतीत कर रहा है सुनिश्चित करने के लिए है कि उन्हें लोड करने के लिए इस्तेमाल किया स्मृति ठीक से वसूल किया जाता है यह पता लगाने की उम्मीद है।
बिटमैप स्रोत स्रोत = नया बिटमैप स्रोत() संकलित नहीं होगा और मुझे यकीन नहीं है कि क्यों। इस त्रुटि को फेंकता है: त्रुटि अमूर्त वर्ग या इंटरफ़ेस 'System.Windows.Media.Imaging.BitmapSource' – discorax
Ahh..it संकलित नहीं करता है जब मैं बिटमैप स्रोत के बजाय बिटमैप छवि का उपयोग करता हूं। अब, इससे समस्याएं कैसे पैदा होंगी? :) – discorax
यह दृष्टिकोण अब तक आशाजनक प्रतीत होता है। मैं परीक्षण जारी रखूंगा। – discorax