मैं फ़ोल्डरब्राउज़रडिअलॉग दिखाते समय यादृच्छिक रूप से अमान्य कैस्टएक्सप्शन प्राप्त कर रहा हूं और कई क्लाइंट ने इसकी सूचना दी है।WinForms: फ़ोल्डर ब्राउज़र संवाद दिखाते समय मुझे InvalidCastException क्यों मिलता है?
मुझे इंटरनेट पर कुछ भी प्रासंगिक नहीं मिला है। क्या किसी को पता है कि इसका कारण क्या है/इसे कैसे ठीक किया जाए?
मेरे कोड:
using (FolderBrowserDialog fbd = new FolderBrowserDialog())
{
fbd.ShowNewFolderButton = false;
if (fbd.ShowDialog() == DialogResult.OK)
स्टैक ट्रेस:
Error: System.InvalidCastException:
'Unable to cast object of type 'System.__ComObject' to type 'IMalloc'.'.
Stack trace:
at System.Windows.Forms.UnsafeNativeMethods.Shell32.SHGetMalloc(IMalloc[] ppMalloc)
at System.Windows.Forms.FolderBrowserDialog.GetSHMalloc()
at System.Windows.Forms.FolderBrowserDialog.RunDialog(IntPtr hWndOwner)
at System.Windows.Forms.CommonDialog.ShowDialog(IWin32Window owner)
at System.Windows.Forms.CommonDialog.ShowDialog()
संपादित करें: अतिरिक्त जानकारी: मैं केवल इस पुन: पेश करने के लिए जब VS2008 डिबगर में चल कर पाए हैं।
डीबगर से बाहर होने पर, यह मेरे 64 बिट विंडोज 7 पर केवल बहुत ही कम होता है (6 महीने में एक या दो बार हुआ) और फिर से शुरू होने के बाद चला जाता है।
ग्राहक निश्चित रूप से डीबगर में ऐप नहीं चला रहे हैं, इसलिए यह निश्चित रूप से डीबगर से पुन: उत्पन्न होता है। जहाँ तक इस फेंक दिया जा रहा है में अंत में सिर्फ वास्तविक संवाद रिटर्न के बाद ब्लॉक Reflector.Net का उपयोग करने से के रूप में मैं बता सकता हूँ
:
वाह, यह अजीब है। वह कोड पूरी तरह से हानिरहित दिखता है। क्या आपने .NET को अपग्रेड या डाउनग्रेड करने का प्रयास किया था? – Thomas
क्या आप यूआई थ्रेड के अलावा किसी थ्रेड से 'FolderBrowserDialog' को कॉल कर रहे हैं? –
@ थॉमस: नहीं और मैं कोशिश नहीं करूँगा और न ही मैं किसी भी उपयोगकर्ता से – Marek