2009-05-15 17 views
49

के साथ थ्रेडस्टैटिक संशोधित मेरे पास कुछ कोड है जहां मैं सी # में थ्रेड स्थिर ऑब्जेक्ट का उपयोग करता हूं।स्टेटिक सी #

[ThreadStatic] 
private DataContext connection 

मैं सोच रहा था, इस मामले में, क्या किसी भी परिवर्तन करता है, तो मैं अगर मैं धागा स्थिर संदर्भ पर स्थिर संशोधक डाल मिलेगा?

[ThreadStatic] 
private static DataContext connection 

पहले के साथ प्रति थ्रेड प्रति उदाहरण संदर्भ की एक प्रति होगी, प्रति थ्रेड केवल एक प्रति के साथ?

+1

+1 नजरअंदाज कर दिया जाएगा अच्छा सवाल के लिए। मैंने कभी इस बारे में सोचा नहीं था। –

+0

इसके संपादन को संपादित करने के लिए धन्यवाद! –

उत्तर

53

ThreadStaticAttribute केवल MSDN points out के रूप में स्थिर चर पर उपयोग करने के लिए डिज़ाइन किया गया है। यदि आप इसे आवृत्ति चर पर उपयोग करते हैं, तो मुझे संदेह है कि यह ठीक से कुछ भी नहीं करेगा।

+1

कोई भी दस्तावेज किसी भी दस्तावेज से अवगत है जो आधिकारिक नीति का वर्णन करता है कि उसे क्या करना है? यदि इस तरह से इसका उपयोग नहीं किया जाना चाहिए, तो यह संकलन त्रुटि का कारण नहीं बन सकता है, या विशेषताएँ संकलन त्रुटियों का कारण नहीं बन सकती हैं? – Catskul

+6

यह बहुत अच्छा होगा अगर यह एक कंपाइलर त्रुटि थी, क्योंकि मैंने बस एक रहस्यमय थ्रेडिंग से संबंधित बग को ट्रैक करने में कुछ घंटे बिताए हैं, जो एक उदाहरण क्षेत्र पर [थ्रेडस्टैटिक] का उपयोग किया जा रहा है और इस प्रकार कोई नहीं है प्रभाव ... –

+0

@romkyns वही यहाँ ... बस एक उदाहरण क्षेत्र पर [थ्रेडस्टैटिक] के कारण एक बग खींचा। – chakrit

8

पहले मामले में यह शायद, नजरअंदाज कर दिया जाएगा, जबकि दूसरे मामले में आप सही हैं, धागा प्रति एक उदाहरण।

6

MSDN कहते हैं:

इंगित करता है कि एक स्थिर फ़ील्ड का मान प्रत्येक थ्रेड के लिए अद्वितीय है।

तो मुझे लगता है कि आप पहले मामले सही नहीं है ... विशेषता शायद

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