वहाँ कैसे धागे यहाँ काम करने के लिए के रूप में कुछ भ्रम की स्थिति होने लगते हैं, तो यह एक प्राइमर है (भी बहुत ही कम है, तो आप मल्टी-थ्रेडेड प्रोग्रामिंग में आगे करने से पहले अधिक सामग्री मिलनी चाहिए।)
वस्तुओं और स्मृति अंतर्निहित बहु-धागे इस अर्थ में है कि एक प्रक्रिया में सभी धागे उन्हें चुन सकते हैं जैसे वे चुनते हैं।
इसलिए वस्तुओं के धागे के साथ कुछ भी नहीं है।
हालांकि, कोड थ्रेड में निष्पादित होता है, और यह कोड उस थ्रेड को निष्पादित करता है जिसमें आप शायद बाद में होते हैं।
दुर्भाग्यवश, "ऑब्जेक्ट को एक अलग थ्रेड में डालने" का कोई तरीका नहीं है, जैसा कि आप इसे डालते हैं, आपको विशेष रूप से थ्रेड शुरू करना होगा और उस थ्रेड में निष्पादित करने के लिए कोड निर्दिष्ट करना होगा। उस कोड द्वारा उपयोग किए जाने वाले ऑब्जेक्ट्स को इस धागे से संबंधित "कहा" कहा जा सकता है, हालांकि यह एक कृत्रिम सीमा है जिसे आप स्वयं लगाते हैं।
तो वहाँ यह करने के लिए कोई रास्ता नहीं है:
SomeObject obj = new SomeObject();
obj.PutInThread(thatOtherThread);
obj.Method(); // this now executes in that other thread
वास्तव में, एक आम जाल कई नए बहु धागा प्रोग्रामर में गिर है कि अगर वे एक थ्रेड में एक वस्तु बना सकते हैं और फोन उस पर तरीकों किसी अन्य थ्रेड से, उन सभी विधियों ने उस थ्रेड में निष्पादित किया जिसने ऑब्जेक्ट बनाया था। यह गलत है, विधियों को हमेशा थ्रेड में निष्पादित करता है जिसे उन्हें बुलाया जाता है।
Thread 1:
SomeObject obj = new SomeObject();
Thread 2:
obj.Method(); // executes in Thread 1
विधि यहाँ थ्रेड 2 में मूल सूत्र में निष्पादित करने के लिए विधि प्राप्त करने के लिए एक ही रास्ता निष्पादित करेंगे मूल थ्रेड के साथ सहयोग और करने के लिए है "से पूछते हैं:
तो निम्नलिखित भी सही नहीं है यह "उस विधि को निष्पादित करने के लिए। आप कैसे करते हैं यह स्थिति पर निर्भर करता है और ऐसा करने के कई तरीके हैं।
तो आप जो चाहते हैं उसे सारांशित करने के लिए: आप एक नया धागा बनाना चाहते हैं, और उस थ्रेड में कोड निष्पादित करना चाहते हैं।
ऐसा करने के लिए, Thread .NET की कक्षा देखें।
लेकिन चेतावनी दी: बहु पिरोया अनुप्रयोगों निहायत सही पाने के लिए कड़ी मेहनत कर रहे हैं, मैं एक कार्यक्रम के लिए मल्टी-थ्रेडेड क्षमताओं नहीं जोड़ना होगा, जब तक कि:
- इसे से बाहर और अधिक प्रदर्शन प्राप्त करने के लिए एक ही रास्ता है कि
- और, आप जानते हैं कि आप क्या कर रहे हैं
के रूप में स्थिर –
facepalm @pranay :) – annakata
उपयोग ParameterizedThreadStart अपने धागा करने के लिए एक वस्तु पारित करने के लिए objecta पैदा करते हैं। – Serdar