क्या कोई विशिष्ट थ्रेड चलाने के लिए प्रतिनिधि प्राप्त करने का कोई तरीका है?एक विशिष्ट थ्रेड पर एक प्रतिनिधि को आमंत्रित करें C#
मेरे पास है कहते हैं:
CustomDelegate del = someObject.someFunction;
Thread dedicatedThread = ThreadList[x];
मैं एक सुसंगत पृष्ठभूमि लंबी चलने वाली धागा है और जब भी मैं इसकी आवश्यकता है उस पर अपने ही प्रतिनिधियों आह्वान कर सकते हैं। यह हर बार एक ही धागा होना चाहिए।
[संपादित करें]
कारण है कि मैं इसे एक समर्पित धागे पर होना चाहता हूँ समय है कि मैं इस पर प्रतिनिधि को चलाने के लिए और y
मिलीसेकेंड के बाद धागा स्थगित करता है, और फिर से शुरू धागा जब मैं चलाने के इरादे है इस पर एक और प्रतिनिधि। मुझे लगता है कि यह संभव नहीं है। मेरे पास एक प्रतिनिधि कतार होगी और धागे का मुख्य कार्य इसे पढ़ने और चलाने के लिए अनुमति देगा।
एक ठोस उदाहरण के साथ स्पष्टीकरण के लिए, मेरे पास प्लेयर थ्रेड के समूह के साथ एक गेम सिस्टम है। मैं प्रत्येक खिलाड़ी को खेल आयोजनों के लिए ईवेंट हैंडलर चलाने के लिए चाहता हूं। यदि ईवेंट हैंडलर बहुत अधिक समय लेते हैं तो मैं उस विशेष खिलाड़ी को अपने थ्रेड को निलंबित करके अगली घटना तक रोक सकता हूं।
इस प्रकार एक समर्पित धागा है जिसमें मैं कई ईवेंट हैंडलर चला सकता हूं, अगर मैं बग हो गया या बहुत लंबा समय ले रहा हूं तो मैं किसी विशेष खिलाड़ी की एआई को रोक सकता हूं।
एक्शन थ्रेड को इंगित करने के लिए धन्यवाद, यह बहुत उपयोगी लगता है। मुझे बाहरी कोड को समाहित करने की आवश्यकता थी जिस पर मेरे पास धागे में थोड़ा नियंत्रण नहीं है। मेरे पास बाहरी कोड में प्रतिनिधि हैं। अगर मैं बीमा कर सकता हूं कि ऑब्जेक्ट एक विशेष थ्रेड में है तो मैं उस ऑब्जेक्ट को केवल थ्रेड को निलंबित करके "रोक सकता हूं"। मुझे नहीं लगता कि थ्रेडपूल मुझे ऑब्जेक्ट को अच्छी तरह से "रोक" देगा। – Raynos
चेतावनी का एक शब्द: यह संभव है (यहां तक कि संभव है) थ्रेड को निलंबित/फिर से शुरू करके गलती से डेडलॉक्स का कारण बन सकता है। यदि संभव हो, तो बाहरी कोड बदलें। यदि यह संभव नहीं है, तो निलंबन/फिर से शुरू करने के बजाय थ्रेड प्राथमिकताओं का उपयोग करने पर विचार करें। –