मैं एक आईएसटी स्ट्रीम का उपयोग कर COM स्वचालन के माध्यम से डेटा की बड़ी मात्रा को स्थानांतरित करने के लिए एक सी # कक्षा पुस्तकालय लिख रहा हूं। यह स्ट्रीम बनाने के लिए CreateStreamOnHGlobal एपीआई कॉल का उपयोग करता है, और इसके साथ काम करने के लिए System.Runtime.InteropServices.COMTypes.IStream के तरीकों का उपयोग करता है।बड़े ISTreams को प्रबंधित करने का सही तरीका क्या है?
मेरा प्रश्न है, डेटा की बड़ी मात्रा में स्थानांतरित करते समय, स्मृति पदचिह्न को नियंत्रण में रखने का सबसे अच्छा तरीका क्या है? स्मृति में 100 एमबी फ़ाइल डेटा लोड हो रहा है अपर्याप्त लगता है, और क्लाइंट एप्लिकेशन को तब तक इंतजार करना होगा जब तक कि कुछ भी डाउनलोड करने से पहले यह प्रक्रिया पूरी नहीं हो जाती।
मेरी योजना एक उचित आकार की धारा बनाने और इसे कई बार लिखना था। डेटा के अगले हिस्से को लिखने से पहले, शुरुआत में वापस खोजें और शुरुआत में शुरू करें। क्या मैं इस बारे में सही तरीके से जा रहा हूं, और क्या इस समस्या को हल करने के लिए एक बेहतर तरीका है?
कहाँ से आती है? स्मृति में * सब कुछ * स्टोर करना दुर्लभ है। आप निश्चित रूप से केवल पढ़ने() विधि कार्यान्वयन में इसे पढ़ सकते हैं? –
डीबी टेबल और टेक्स्ट फाइलों सहित विभिन्न स्रोतों से। लाइब्रेरी कोड डेटा को बाइट सरणी में पार्स करता है और इसे स्ट्रीम में स्थानांतरित करता है। मैं इसे छोटे हिस्सों में पढ़/लिख सकता हूं, यह कोई समस्या नहीं है। मुद्दा यह है कि, जैसा कि मैं धारा के अंत में लिखता रहता हूं, यह लगातार बढ़ेगा, है ना? – polara
आप शायद अपनी खुद की कक्षा लिख रहे हैं जो आईएसट्रीम इंटरफ़ेस लागू करता है, फिर आप रीड विधि को कॉल संभाल सकते हैं और मांग पर डेटा लोड कर सकते हैं, एक बार यह पढ़े जाने के बाद उस डेटा को और बनाए रखने की आवश्यकता नहीं है (मान लीजिए कि आप अनुमति नहीं दे रहे हैं आईएसट्रीम खोजने योग्य होना चाहिए)। – tyranid