कोई थ्रेड जो किसी भी विंडो बनाता है हमेशा एक एकल थ्रेडेड अपार्टमेंट बनाएं। एक एसटीए किसी भी COM ऑब्जेक्ट के लिए थ्रेडिंग गारंटी प्रदान करता है जो थ्रेड-सुरक्षित नहीं है। बहुत कम हैं। COM बुनियादी ढांचे सुनिश्चित करता है कि इस तरह के किसी ऑब्जेक्ट के तरीकों को हमेशा सही धागे से बुलाया जाता है, यदि आवश्यक हो तो कॉल को मार्शल करना। नियंत्रण के समान ही। बेगिन/Invoke() लेकिन बिना किसी कोडिंग के स्वचालित रूप से किया जाता है।
कई विंडोज़ सुविधाएं उस गारंटी पर भरोसा करती हैं। विशेष रूप से क्लिपबोर्ड, ड्रैग + ड्रॉप और खोल संवाद (जैसे OpenFileDialog) इसके बिना ठीक से काम नहीं करेगा। और ActiveX नियंत्रणों के बहुत सारे, WebBrowser एक आम है जिसे आप Winforms प्रोजेक्ट में उपयोग करेंगे। अपने यूआई थ्रेड को एमटीए थ्रेड बनाना विफलता का निदान करने के लिए कठिन होता है, डेडलॉक एक आम है। या एक त्वरित अपवाद जब घटक के लिए .NET wrapper डबल-चेक करता है कि यह एक एसटीए पर बनाया गया था।
स्रोत
2010-11-16 13:56:58