2012-04-04 9 views
6

यदि आपके पास एक विंडोज़ सेवा है और एक विंडोज़ फॉर्म है जो एक ही स्थैतिक वस्तु का उपयोग करता है, तो यह दोनों अनुप्रयोगों में एक ही वस्तु है? दूसरे शब्दों में यदि मैं सेवा में ऑब्जेक्ट को अपडेट करता हूं तो इसे फॉर्म एप्लिकेशन में भी अपडेट किया जाएगा, साथ ही दोनों एक ही समय में चल रहे हैं?एक स्थिर वस्तु एक ही ऑब्जेक्ट एकाधिक चल रहे अनुप्रयोगों में है?

उत्तर

8

वे विभिन्न प्रक्रियाओं पर चलते हैं ताकि वे स्थैतिक वस्तु साझा न करें।

exaclty अपने प्रश्न, लेकिन एक ही आवेदन पर बनाया धागे के साथ संबंधित नहीं एक अलग कहानी है। जब तक ThreadStatic के साथ चिह्नित है विशेषता

0

मुझे लगता है कि प्रत्येक एप्लिकेशन अपनी प्रक्रिया में चलता है। मुझे सच में संदेह है कि विंडोज सेवा में एक स्थैतिक वस्तु को अद्यतन करने से स्थिरता ऑब्जेक्ट पर विंडोज़ फॉर्म के रूप में चलने पर कोई असर पड़ता है।

विंडोज सेवा system खाते के तहत चलती है जहां एक विंडोज़ फॉर्म एप्लिकेशन User खाते के तहत चलता है।

के रूप में दूसरों को टिप्पणी में बताया है, प्रक्रियाओं अलग स्मृति में चलाते हैं। प्रत्येक प्रक्रिया में अपना स्वयं का पता स्थान है।

विंडोज सेवा सेवा नियंत्रण प्रबंधक आदेशों का जवाब देती है।

वे पूरी तरह से दो अलग-अलग चीजें हैं।

+2

इसका उपयोगकर्ता खातों से कोई लेना देना नहीं है। विभिन्न प्रक्रियाओं में अलग-अलग मेमोरी रिक्त स्थान होते हैं और इस प्रकार प्रति डिफ़ॉल्ट डेटा साझा नहीं करते हैं। –

+0

@BrianRasmussen बिल्कुल - संदीप आपको शायद इसे थोड़ा संपादित करना चाहिए। – NSGaga

2

नहीं। जब तक आप कुछ हासिल करने के लिए इस वस्तुओं विभिन्न प्रक्रियाओं के बीच साझा नहीं कर रहे हैं विशिष्ट कर वे स्थिर चर साझा करेंगे।

0

इस के लिए सरल जवाब है कि प्रत्येक प्रक्रिया का अपना स्थिर तो नहीं, यह सेवा और डेस्कटॉप प्रक्रिया के बीच साझा नहीं किया जाएगा है।

जटिल हिस्सा यह है कि एकल प्रक्रिया में स्थैतिक के कई उदाहरण भी हो सकते हैं।

Java में प्रत्येक ClassLoader के लिए स्थैतिक वस्तु का एक उदाहरण है जो कक्षा को लोड करता है। मैंने C# में समकक्ष कार्यक्षमता की जांच की। मुझे this question on SO मिला जो बताता है कि वास्तव में C# में मुझे कई क्लासलोडर के समान कुछ है (मुझे लगता है कि वास्तव में CLR में) और हालांकि मुझे स्थिर के कई उदाहरणों के लिए कोई विशिष्ट संदर्भ नहीं मिला है, मुझे यकीन है कि यह मामला होगा।

0

सीधे शब्दों में नहीं डाल दिया,
स्थिर है 'static per AppDomain' (और आप इस प्रक्रिया के प्रति एक से अधिक डोमेन हो सकता था), इसलिए नहीं भी एक प्रक्रिया के लिए ग्रहण करने के लिए है कि अपने स्थैतिक चर 'साझा' हो जाएगा सुरक्षित है (आम तौर पर जब तक सच है आप हाथ से नए डोमेन बनाते हैं, उदाहरण के लिए What is AppDomain? देखें) - उदाहरण के लिए वेब ऐप्स आम तौर पर 'स्थैतिक' सिंगलटन आदि को तोड़ते हैं
दूसरे शब्दों में आपको विभिन्न प्रकार के अनुप्रयोगों के बीच अपना डेटा साझा करने में सक्षम होने के लिए किसी प्रकार की दृढ़ता का उपयोग करने की आवश्यकता है। या एप्लिकेशन (डोमेन) सीमाओं पर संवाद करने के लिए डब्ल्यूसीएफ को रिमोटिंग का उपयोग करें।

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