2010-05-05 11 views

उत्तर

17

Thread.Start प्रतिनिधि को निष्पादित करने के लिए एक नया ओएस थ्रेड शुरू करता है। जब प्रतिनिधि वापसी करता है, तो धागा नष्ट हो जाता है। यह काफी भारी वजन वाला ऑपरेशन है (एक थ्रेड शुरू करना और नष्ट करना) ताकि आप आमतौर पर ऐसा कर सकें यदि विधि लंबे समय तक चल रही है।

Delegate.BeginInvoke प्रतिनिधि को थ्रेड पूल थ्रेड पर कॉल करेगा। एक बार विधि लौटने के बाद, धागे को पूल में वापस कर दिया जाता है ताकि किसी अन्य कार्य द्वारा पुन: उपयोग किया जा सके। इसका लाभ यह है कि थ्रेड पूल के लिए एक विधि क्यूइंग करना अपेक्षाकृत हल्का वजन है क्योंकि आपको हर बार एक नया धागा स्पिन करने की आवश्यकता नहीं होती है।

Control.BeginInvoke नियंत्रण के लिए धागे पर विधि को आमंत्रित करता है। यूआई घटक स्वाभाविक रूप से एकल-थ्रेडेड होते हैं और यूआई नियंत्रण के साथ हर बातचीत को बनाए गए थ्रेड पर किया जाना चाहिए। Control.BeginInvoke ऐसा करने का एक आसान तरीका है।

2
  • Delegate.BeginInvoke ThreadPool का उपयोग करता विधि (See MSDN) निष्पादित करने के लिए।

  • Thread.Start एक नया नया धागा बनाता है। .net में समवर्ती कोड चलाने के विभिन्न तरीकों के बीच मतभेद के बारे में अधिक जानकारी के लिए differences in the different ways to make concurrent programs:

इस प्रश्न देखें।