c# - Invoke target throwing invalid cross-thread operate exception -
विधि इनफ़ो माइ = टाइपफ (नोटिफ़िक इंक)। गेटमैथि ("शोकॉन्टेक्समेनू", बाइंडिंग फ्लेग्ज.इनस्टेंस | बाईंडिंगफ़्लैग नॉनपॉलिक); Mi.Invoke (सूचित करें, रिक्त);
यह निम्न अपवाद को फेंकता है:
{"अपवाद को एक अभिवादन के लक्ष्य के द्वारा फेंका गया है।"}}
निम्नलिखित आंतरिक अपवाद:
"क्रॉस-थ्रेड ऑपरेशन मान्य नहीं है: नियंत्रण '' जिस धागे पर बनाया गया था, उसके अलावा किसी थ्रेड से पहुंचा।"
अगर मैं टिप्पणी करता हूं कोड की एक पंक्ति बाहर जो संदर्भ मेनू प्रविष्टियों के लिए छवियों को सेट करता है तो यह अपवाद फेंकना बंद कर देता है।
कोई भी विचार?
आप invoke
विधि MethodInfo
की भ्रामक हो सकती है, जो वर्तमान कोड के साथ वर्तमान थ्रेड पर बस को आमंत्रित करता है; को आमंत्रित करें जो UI थ्रेड पर एक प्रतिनिधि को आमंत्रित करता है।
यदि आप सही UI थ्रेड के अलावा कोई थ्रेड से UI तत्व तक पहुंचने का प्रयास करते हैं, तो आपको यह अपवाद मिलता है।
मूल रूप से आपको इस कोड को UI थ्रेड पर इसके बजाय निष्पादित करने की आवश्यकता है।
क्या कोई कारण है कि आप ShowContextMenu
बजाय प्रतिबिंब के बजाय सीधे? आपको बस कुछ चीजों की आवश्यकता हो सकती है (सी # 3 मानते हुए):
विधि Invoker कार्रवाई = () = & gt; notify.ShowContextMenu (); someControl.Invoke (कार्रवाई);
Comments
Post a Comment