2008-10-22 13 views
7

मैं एक सी # डीएल बना रहा हूं, जिसे WinForms में अन्य डेवलपर्स द्वारा उपयोग किया जा रहा है। कुछ कारणों से, मैं यह जानना चाहता हूं कि, यदि इस लाइब्रेरी से विधियों को मुख्य (जीयूआई) थ्रेड से बुलाया जाता है और डेवलपर को चेतावनी दी जाती है तो उन्होंने ऐसी चीज (यानी लॉग फ़ाइल में) की है। मुख्य धागे से कॉलिंग विधि का पता लगाने का कोई उचित तरीका है? याद रखें कि मेरे पास WinForm एप्लिकेशन तक कोई पहुंच नहीं है।सी # लाइब्रेरी में मुख्य थ्रेड में चलने का पता लगाना

उत्तर

17

इस मामले में एक आसान समाधान मुख्य यूआई थ्रेड पर बनाई गई लाइब्रेरी असेंबली में स्थिर नियंत्रण घोषित करना है। आप पता लगाने के लिए अगर पुस्तकालय मुख्य थ्रेड से कहा जाता है चाहते हैं, तो निम्न

if (MyLibraryControl.InvokeRequired) 
    //do your thing here 
+1

इसे प्रश्न के सही उत्तर के रूप में चिह्नित किया जाना चाहिए। –

2

सबसे आसान विकल्प (यदि आप एक रूप है/काम पर नियंत्रण) InvokeRequired जाँच करने के लिए है का उपयोग करें।

अनुपस्थिति में, यदि आप पोस्ट या भेजें अनुकरण करने के लिए SynchronizationContext का उपयोग करने का प्रयास कर सकते हैं, तो जांचने के लिए क्या थ्रेड होता है? कॉलिंग भेजें या पोस्ट यूआई थ्रेड पर स्विच करेगा।

संबंधित मुद्दे