2010-12-31 10 views
6

मैं सी # में कक्षा पुस्तकालय डीएलएल बनाना चाहता हूं, जिसमें इसमें एक स्टेटिक क्लास होगा। उस स्थैतिक वर्ग के लिए एक सार्वजनिक स्थैतिक संपत्ति के साथ 1 निजी स्थिर सदस्य (int) है।एक सी # लाइब्रेरी कैसे बनाएं जो केवल एक बार मेमोरी में लोड हो जाती है?

जो मैं चाहता हूं वह है कि प्रत्येक सी # अनुप्रयोग के लिए जो इस डीएलएल का संदर्भ देता है, उसे एक ही स्थिर वर्ग मिलेगा।

मतलब Application1 स्थिर सदस्य के मूल्य में परिवर्तन 5, होने के लिए और उसके बाद Application2 प्रॉपर्टी का मूल्य प्राप्त करने के लिए प्रयास करता है, यह मिल जाएगा: 5.

तथ्य के बावजूद कि उन दो अलग अलग अनुप्रयोगों (व्यय कर रहे हैं)।

बस शब्दों में, मैं चाहता हूं कि यह पूरी कक्षा लाइब्रेरी "स्थैतिक", हो, इसलिए केवल एक बार इसे स्मृति में लोड किया जाएगा, और उसके बाद इसके एकल मान को संदर्भित विभिन्न EXEs में साझा किया जाएगा।

आप

+0

आपको कहीं भी डेटा को सहेजना होगा। तो आप अपने डेटा को स्टोर करने के लिए विंडोज रजिस्ट्री या पृथक भंडारण पर विचार करना चाहेंगे। –

+0

इसे "सर्वर" कहा जाता है। यह एक exe है। सर्वर से बात करने के लिए डीएलएल लिखें। –

+0

यह संभवतः अधिक सार्थक होगा यदि आप प्रारंभिक समस्या का वर्णन कर सकते हैं जो आपके पास था/जिसने आपको इस समाधान के लिए प्रेरित किया था। चबैसिटी के जवाब पर आपकी टिप्पणियों में, आपने संकेत दिया कि आप ऑब्जेक्ट्स साझा करना चाहते थे (न केवल पूर्ण स्केलर्स जैसे पूर्णांक)। यह वास्तव में अच्छी तरह से काम नहीं करेगा। –

उत्तर

3

एक आकर्षक एक ही कंप्यूटर पर सभी प्रक्रियाओं के बीच साझा डेटा का हल साझा किया जाता है स्मृति धन्यवाद। साझा मूल्य को पुनर्प्राप्त करने के लिए आपको अपनी प्रॉपर्टी को फिर से लिखना होगा, और कक्षा को आपकी लाइब्रेरी का उपयोग करने वाली प्रत्येक प्रक्रिया में कई बार लोड किया जाएगा, लेकिन यह व्यवहार करेगा जैसे कि केवल एक ही प्रतिलिपि थी, अगर आप इसे सही तरीके से करते हैं।

यहाँ मदद करने के लिए आप आरंभ करने के लिए एक StackOverflow सवाल यह है:

यह आप उपयोग कर सकते हैं एक पूरा शेयर्ड मेमोरी पुस्तकालय से जोड़ता है।

0

मैं ओमेर हूं, मैंने पंजीकरण किया है, ऐसा लगता है कि मैं एक अलग उपयोगकर्ता हूं।

के बारे में Damien_The_Unbeliever ने कहा, मुझे सभी को जो वर्णन करना है, उसका वर्णन करने की अनुमति दें, ताकि आप मुझे उस मामले के लिए सबसे अच्छे समाधान की ओर निर्देशित कर सकें।

मैंने एक अच्छा एप्लीकेशन बनाया है। इस एप्लिकेशन में एक जीयूआई है। मैं इस एप्लिकेशन को संचालित करने के लिए एक और तरीका जोड़ना चाहता हूं, जो इसके लिए एक एपीआई उजागर करने के माध्यम से होगा - मेरे आवेदन को संचालित करने के लिए अन्य अनुप्रयोगों का उपयोग कर सकते हैं।

और मैं क्या करने की योजना है: एक स्थिर वर्ग के साथ एक DLL बनाएँ, उस वर्ग में, अपने आवेदन के मूल रखा और फिर जीयूआई है, और संभवतः सभी अन्य अनुप्रयोगों, उस वर्ग का उपयोग करें।

कृपया ध्यान दें कि इस वर्ग के कि संग्रहीत किया जा सकता है न केवल डेटा, लेकिन यह भी संदर्भ का आयोजन करेगा करने के लिए "लाइव" वस्तुओं (यानी खुला coomunication बंदरगाहों, आदि आदि), तो डिस्क पर संग्रहीत करने, और यह से पढ़ नहीं होगा यहाँ एक अच्छा समाधान हो। मुझे चाहते हैं कि सभी अनुप्रयोगों से सुलभ होने के लिए, इस 1 स्थैतिक वर्ग की आवश्यकता है और उन सभी को एक ही स्थिर वर्ग मिलेगा।

तो, मुझे इस कक्षा को स्थैतिक होने की आवश्यकता है, और मुझे लाइब्रेरी को "स्थिर" होने की आवश्यकता है। (.NET में "स्थिर पुस्तकालय" जैसी कोई चीज़ नहीं, मुझे पता है। कृपया ध्यान दें कि मैं स्थिर पुस्तकालय के बारे में बात नहीं कर रहा हूं जैसे सी ++ - वहां कुछ और है ..मैं एक डीएलएल के बारे में बात कर रहा हूं जो केवल एक बार बनाया गया है, जो सभी अनुप्रयोगों का उपयोग करते हैं)।

+0

क्या यह आपके अपने प्रश्न का उत्तर है? यदि नहीं, और यह केवल एक टिप्पणी है, तो आपको इस मूल जानकारी के साथ अपने मूल प्रश्न को संशोधित करना चाहिए। – Dykam

+0

मैं अपने मूल प्रश्न को संशोधित नहीं कर सकता क्योंकि जब मैंने पंजीकरण किया, तो उसने मुझे एक नया उपयोगकर्ता दिया .. इसलिए मूल प्रश्न मेरे साथ नहीं है (नया उपयोगकर्ता), इसलिए मैं इसे संपादित करने में सक्षम नहीं हूं। मैं इसे अब कैसे जोड़ सकता हूं? या यह खो गया है? – Omer

+0

आपके पास Windows में एकाधिक प्रक्रियाओं में साझा किए गए डीएल का एक स्थिर "उदाहरण" नहीं हो सकता है। यदि आप प्रक्रियाओं के बीच संवाद करना चाहते हैं तो आपको अंतर-प्रक्रिया संचार या साझा स्मृति (अन्य उत्तरों देखें) का उपयोग करने की आवश्यकता होगी। –

2

जो आप खोज रहे हैं वह IPC या RPC का कुछ रूप है। एक विकल्प .NET Remoting है।

संबंधित मुद्दे