यह एक डब्ल्यूपीएफ की तुलना में एक विंडोज़ आवश्यकता है, और पहले .NET से विंडोज फॉर्म और नियंत्रण के मूल डिजाइन पर वापस चला जाता है।
STAThread "एकल-थ्रेड वाले अपार्टमेंट" को संदर्भित करता है जो वर्तमान (मुख्य) धागे द्वारा उपयोग किए जाने वाले थ्रेडिंग मॉडल को संदर्भित करता है। उपयोग में थ्रेडिंग मॉडल यह बताता है कि अन्य .NET और COM अनुप्रयोग आपके एप्लिकेशन (और मूल रूप से, इसके धागे) से कैसे बात करेंगे। सिंगल थ्रेडेड एप्लिकेशन मॉडल की आवश्यकता है कि एक ही ऑब्जेक्ट एक समय में एक से अधिक एसटीए थ्रेड में "लाइव" हो, एमटीए थ्रेड मॉडल छंद; और पॉइंटर्स को केवल मार्शेलिंग-ए-ऑब्जेक्ट के माध्यम से अपार्टमेंट में डेटा तक पहुंचने की अनुमति देता है।
असल में, [STAThread] घोषणा के साथ, अन्य अनुप्रयोगों को पता चलेगा कि डेटा भेजने पर आपकी थ्रेड की नीति क्या है। एसटीए मॉडल विंडोज थ्रेड्स/अनुप्रयोगों के लिए सबसे आम थ्रेडिंग मॉडल है; लेकिन आप कभी-कभी कुछ कोड में आते हैं जो एसटीए-मॉडलिंग थ्रेड से बुलाए जाने पर नहीं चलेगा, क्योंकि यह एसटीए प्रतिबंधों का पालन नहीं करने वाले तरीकों से थ्रेड सीमाओं में डेटा भेजने/प्राप्त करने के लिए डिज़ाइन किया गया है। पहले से जानना कि किसी दिए गए धागे का अपार्टमेंट मॉडल आईडीई को रनटाइम के दौरान थ्रेड सीमाओं में ऑब्जेक्ट का उपयोग करने का प्रयास करते समय गंदा पहुंच उल्लंघन त्रुटियों के बजाय संकलन-समय पर इन अपवादों को पकड़ने की अनुमति देता है।
आपको कम से एसटीए और MSDN लेख से एमटीए धागे के बारे में पढ़ सकते हैं: http://msdn.microsoft.com/en-us/library/ms680112(VS.85).aspx
ध्यान दें कि (WPF पहले से) भी सामान्य NET अनुप्रयोगों मुख्य के ऊपर की आवश्यकता [STAThread] घोषणा()।
स्रोत
2009-08-18 12:04:05
यदि यह शुरुआती के लिए "अधिक जटिल" नहीं है .. तो आपको इसकी आवश्यकता नहीं है ..मुझे पढ़ना अच्छा लगता है :) –
संदर्भ उद्देश्यों के लिए SO पर सारांश होना अभी भी अच्छा है, और यदि कहा गया ब्लॉग ऑफलाइन हो जाता है, तो पोस्ट हटा दिया जाता है, माइक्रोसॉफ्ट नरक की एक गेंद में जलता है, इत्यादि। –