यह अपवाद का मतलब है कि धागा है कि पैनल का मालिक (पैनल जोड़ा जा रहा है) एमटीए थ्रेडिंग मॉडल का उपयोग शुरू किया गया है। ड्रैग/ड्रॉप सिस्टम के लिए आवश्यक है कि कॉलिंग थ्रेड एसटीए थ्रेड मॉडल का उपयोग करे (विशेष रूप से यह आवश्यक है कि COM को OleInitialize के माध्यम से प्रारंभ किया जाए)। थ्रेडिंग मॉडल COM के एक दुर्भाग्यपूर्ण निहित हैं, जो .NET प्लेटफॉर्म के पूर्ववर्ती हैं।
आप अपने मुख्य समारोह पर [STAThread]
विशेषता है, तो मुख्य कार्यक्रम धागा पहले से ही जाँच की जानी चाहिए। सबसे संभावित स्पष्टीकरण, तो, यह है कि यह अपवाद एक अलग धागे पर हो रहा है। अपवाद होने पर दृश्य स्टूडियो (डीबग | विंडोज | थ्रेड) में थ्रेड विंडो को देखें और देखें कि क्या आप मुख्य थ्रेड के अलावा किसी थ्रेड पर हैं या नहीं।
Thread.CurrentThread.SetApartmentState(ApartmentState.STA)
: आप कर रहे हैं, समाधान शायद, कि नया थ्रेड के लिए धागा मॉडल की स्थापना जो आप इस प्रकार कर सकते हैं के रूप में सरल है (धागा जहां नियंत्रण बनाया जा रहा है के लिए इस कोड को जोड़ने) (Thread
और ApartmentState
System.Threading
के सदस्य हैं)
कोड होता है इससे पहले कि आप वास्तव में नए धागा शुरू की आवश्यकता होगी कि। जैसा कि @ टॉमर द्वारा नोट किया गया है, आप [STAThread]
विशेषता का उपयोग करके इसे घोषणात्मक रूप से निर्दिष्ट भी कर सकते हैं।
आप पाते हैं कि अपवाद मुख्य थ्रेड पर होने वाला है तो वापस पोस्ट और हमें बताएँ, और शायद हम और अधिक कर सकते हैं। अपवाद के समय एक स्टैक ट्रेस समस्या को ट्रैक करने में मदद कर सकता है।
आप इसे मैन्युअल की स्थापना के साथ उपद्रव नहीं करना चाहते हैं, तो आप कर सकते हैं भी धागा पद्धति पर [STAThread] विशेषता डाल दिया। –