हमें हमारे बहु-थ्रेडेड एंटिटी फ्रेमवर्क संचालित एप्लिकेशन को डिज़ाइन करने में कुछ परेशानी हो रही है और कुछ मार्गदर्शन चाहते हैं। हम विभिन्न धागे पर इकाइयां बना रहे हैं, इकाइयों को संग्रह में जोड़ा जाता है जो तब विभिन्न wpf नियंत्रणों के लिए डेटा बाध्य होते हैं। ऑब्जेक्ट कॉन्टेक्स्ट क्लास थ्रेड सुरक्षित नहीं है, इसलिए इसका प्रबंधन करने के लिए हमारे पास 2 समाधान हैं:इकाई फ्रेमवर्क और मल्टी थ्रेडिंग
समाधान 1 में एक ही संदर्भ है और सावधानी से लॉकिंग का उपयोग यह सुनिश्चित करने के लिए करें कि कोई भी 2 धागे एक ही समय में इसका उपयोग न करें। यह लागू करने के लिए अपेक्षाकृत सरल होगा लेकिन आवेदन की अवधि के लिए संदर्भ जीवित रहने की आवश्यकता होगी। क्या इस तरह एक एकल संदर्भ उदाहरण खोलना बुरा विचार है?
समाधान 2 मांग पर संदर्भ वस्तुओं को बनाना है और फिर वस्तुओं को तुरंत अलग करना है, फिर उन्हें अपने संग्रह में रखें, फिर उन्हें अपडेट करने के लिए फिर से संलग्न करें। हालांकि इसका उपयोग करने के लिए कुछ गंभीर समस्याएं हैं, जैसे कि जब वस्तुओं को अलग किया जाता है तो वे नेविगेशन प्रॉपर्टी ऑब्जेक्ट्स के संदर्भ खो देते हैं। इसके अलावा समस्या है कि 2 थ्रेड अभी भी एक ऑब्जेक्ट तक पहुंचने का प्रयास कर सकते हैं, और दोनों इसे एक संदर्भ में संलग्न करने की कोशिश करते हैं। साथ ही, जब भी हम एक संस्था नेविगेशन गुणों तक पहुंचना चाहते हैं, तो हमें एक नया संदर्भ प्रदान करने की आवश्यकता होगी।
प्रश्न: क्या दोनों समाधानों में से कोई भी वैध है, अगर आप इस बात से निपटने की अनुशंसा नहीं करते हैं कि हम इससे कैसे निपटें?
@usr आपको बेहतर विचार मिला? – Cocowalla
@ कोकोवाला ओपी को संबोधित करने वाले बड़े परिदृश्य को नहीं जानता, मैं नहीं करता हूं। उनके दोनों समाधानों से दर्दनाक कार्यान्वयन होगा जिससे मैं उन्हें चेतावनी दे रहा हूं। हो सकता है कि वह एक पूरी तरह से अलग रास्ता ले सकता है और ईएफ का उपयोग एकल-थ्रेडेड तरीके से कर सकता है (जिस तरह से इसका उपयोग किया जाना है)। – usr
ध्यान देने योग्य एक और बात: जब आप अलग हो जाते हैं तो आप किसी इकाई में कोई भी परिवर्तन नहीं कर सकते हैं, क्योंकि वर्तमान में कोई संदर्भ उस परिवर्तन को ट्रैक नहीं कर रहा है। परिवर्तन सहेज नहीं होगा जब SaveChanges() को बाद में बुलाया जाता है। – JoeCool