Tôi nhận ngẫu nhiên InvalidCastException khi hiển thị FolderBrowserDialog và nhiều khách hàng đã báo cáo điều này.WinForms: Tại sao tôi nhận được InvalidCastException khi hiển thị hộp thoại trình duyệt thư mục?
Tôi chưa thể tìm thấy bất kỳ nội dung nào có liên quan trên internet. Có ai biết điều gì gây ra điều này/làm thế nào để sửa lỗi này?
Mã của tôi:
using (FolderBrowserDialog fbd = new FolderBrowserDialog())
{
fbd.ShowNewFolderButton = false;
if (fbd.ShowDialog() == DialogResult.OK)
Stack trace:
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()
EDIT: Thông tin thêm: Tôi đã có thể tái sản xuất này chỉ khi chạy trong trình gỡ lỗi VS2008.
Khi hết trình gỡ rối, nó chỉ xảy ra rất hiếm (xảy ra một hoặc hai lần trong 6 tháng) trên Windows 7 64 bit của tôi và biến mất sau khi khởi động lại.
Khách hàng chắc chắn không chạy ứng dụng trong trình gỡ lỗi để chắc chắn có thể sao chép được từ trình gỡ rối.
Ồ, thật kỳ lạ. Mã đó trông hoàn toàn vô hại. Bạn đã thử nâng cấp hoặc hạ cấp .NET chưa? – Thomas
Bạn có đang gọi 'FolderBrowserDialog' từ một chuỗi khác với chuỗi giao diện người dùng không? –
@Thomas: Không và tôi sẽ không thử điều đó cũng như không thể yêu cầu bất kỳ người dùng nào làm điều đó – Marek