2012-04-08 7 views
6

मेरे पास एक कक्षा है जिसके लिए गतिशील रूप से सूची सेट करने की आवश्यकता है। मैं थ्रेडिंग का उपयोग करके इस कक्षा 10 या इतने अलग समय को भी कॉल करता हूं।सूची कैसे बनाएं <string> {get; set;} प्रति थ्रेड,

public static List<string> MyList {get;set;}

मैं सूत्रण के लिए नया हूँ, फिर भी, के रूप में मुझे बताया गया है यह असुरक्षित है। मेरे पास सवाल यह है कि मैं प्रति थ्रेड MyList का उदाहरण कैसे बना सकता हूं?

एक उदाहरण शानदार होगा!

+1

यही उदाहरण हैं। यदि आपके पास वास्तव में प्रति थ्रेड का उदाहरण होना चाहिए तो थ्रेड आईडी या थ्रेड स्थानीय संग्रहण के अनुसार अपनी सूचियों का एक शब्दकोश रखें। –

+1

आप क्या करने की कोशिश कर रहे हैं? एक स्थिर क्षेत्र होने और प्रति थ्रेड के उदाहरण के बीच एक बड़ा अंतर है। थ्रेडिंग मुद्दों के कारण यह कुछ नहीं है जो आप बदलते हैं। यह भी प्रभावित करता है कि धागे के बीच डेटा कैसे साझा किया जाता है। –

+0

@MarkByers मैं क्या करना चाहता हूं, जब मैं प्रत्येक के लिए अपने समानांतर का उपयोग करता हूं, तो मैं पिछले 'शून्य 'के परिणामों के आधार पर एक विशिष्ट mysql क्वेरी चलाता हूं। इसके परिणामस्वरूप 'माईलिस्ट' बनाते हैं, जो कि मेरी कक्षा का उपयोग करने के लिए मेरी कक्षा का उपयोग –

उत्तर

8

ThreadStatic विशेषता का उपयोग करें।

[ThreadStatic] private static List<string> _myList; 

public static List<string> MyList { 
    get { return _myList; } 
    set { _myList = value; } 
} 

इसके अलावा, आमतौर पर संग्रहित वर्ग के संग्रह पर नियंत्रण रखना बेहतर होता है; इसका मतलब यह नहीं होगा कि कोई बाहरी रूप से दिखाई देने वाला सेटटर और एक गेटर जो या तो प्रतिलिपि या केवल पढ़ने वाला संग्रह देता है।

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

+0

मैं चाहता हूं कि प्रत्येक थ्रेड में अपनी प्रतिलिपि हो, यह केवल एक बार सेट हो जाता है और कभी भी एगियन सेट नहीं किया जाना चाहिए, हालांकि यह प्रति थ्रेड –

+0

@ माइक पर अद्वितीय होना चाहिए: फिर, 'थ्रेडस्टैटिक' बिल फिट करने लगता है ... इसे आज़माएं । –

+0

इसे जाने देगा, यहां एक बेवकूफ सवाल हो सकता है जो मैं देखता हूं [थ्रेडस्टैटिक] स्पष्ट रूप से कोड को शुरू करता है कि मुझे कैसे पता चलेगा कि [थ्रेडस्टैटिक] माईलिस्ट के अंतिम पर समाप्त होता है और शेष कोड –

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