मैं अपने मुख्य धागे पर कोड के एक अनुभाग को कैसे कार्यान्वित कर सकता हूं?मुख्य धागे पर कोड निष्पादन को मजबूर करना
यही कारण है कि मैं जानना चाहते हैं:
मैं एक कस्टम बनाया संदेश बॉक्स कि कभी-कभी एक धागा है कि मुख्य थ्रेड नहीं है से पता चला जाता है। हालांकि, जब संदेश बॉक्स कन्स्ट्रक्टर को कॉल किया जाता है तो मुझे एक अमान्यऑपरेशन अपवाद मिलता है, "कॉलिंग थ्रेड एसटीए होना चाहिए, क्योंकि कई यूआई घटकों को इसकी आवश्यकता होती है।" यह समझ में आता है, मुख्य थ्रेड पर UI तत्वों को संभालने की आवश्यकता है।
मेरा संदेशबॉक्स .ShowMessage (...) फ़ंक्शन एक स्थिर कार्य है जो मेरे कस्टम संदेश बॉक्स का उदाहरण बनाता है और इसे दिखाता है। क्या कोई ऐसा शो है जो मैं ShowMessage में डाल सकता हूं जो संदेश बॉक्स को बनाएगा और मुख्य धागे पर दिखाया जाएगा? मेरे कोड में कहीं और मैं इसी तरह के मुद्दों को संभालने के लिए Control.BeginInvoke का उपयोग करता हूं, लेकिन चूंकि यह एक स्थिर कार्य है क्योंकि BeginInvoke को कॉल करने के लिए मेरे पास पहले से मौजूद मौजूदा UI तत्व नहीं है।
क्या मुझे MessageBox.ShowMessage को नियंत्रण से कनेक्ट करना है। BginginInvoke? मैं ShowMessage (या कुछ समतुल्य) को ShowMessage के भीतर से बुलाया जाना पसंद करूंगा।
क्या आपके पास एक लिंक है जो बताता है कि आपके द्वारा सूचीबद्ध पहले विकल्प को लागू करने के बारे में कैसे जाना है? थ्रेड शुरू करने से पहले – w4g3n3r
कॉल थ्रेड .etApartmentState()। – itowlson
थ्रेड बनाते समय, बस (संपादित) उत्तर में दिखाए गए अनुसार .etApartmentState को कॉल करें। अगर आपको पहले स्थान पर थ्रेड बनाने में अधिक सहायता की आवश्यकता है तो मुझे बताएं। –