2010-05-19 86 views
0

之前有人看到这个例外,Google没有关于例外的单个帖子。 引发错误的代码是一个简单的添加。奇怪的typeloadexception“委托构造函数上的错误标志”。

Items.Add(item); 


System.TypeLoadException: Bad flags on delegate constructor. 
    at System.Windows.Forms.ListView.Sort() 
    at System.Windows.Forms.ListView.InsertItems(Int32 displayIndex, ListViewItem[] items, Boolean checkHosting) 
    at System.Windows.Forms.ListView.ListViewNativeItemCollection.Add(ListViewItem value) 
    at System.Windows.Forms.ListView.ListViewItemCollection.Add(ListViewItem value) 
+2

你有这表明该问题的简短但完整的例子吗?您使用的是哪个版本的.NET? – 2010-05-19 13:35:27

+0

这个错误刚刚出现在我安装我们产品的计算机上。它是Win server 2003,.Net 3.5。我从来没有在任何其他电脑/网络版上看到过这个错误。 我会看看我是否可以做一个短样和帖子。但我很确定这个错误取决于计算机和/或环境,而不是代码本身。 – Marcus 2010-05-19 13:48:28

+0

什么是你的物品对象? 存储在Windows事件日志中的任何数据? – ChrisBD 2010-05-19 13:49:49

回答

1

原因是我今天上午发现的一个System.Windows.Form v2.0错误(并且在System.Windows.Form v4.0中修复了这个错误)。

对我而言,当我的代码在托管进程关闭时,Item被加入ListBox时,发生了这种情况。私有实例字段ListBox.listItemsArray为空,这引发了NullReferenceException。我不知道为什么ListBox.listItemsArray为空,但我猜它与手柄创建问题有关。

对我来说,解决方法很简单,因为try/catch就足够了,因为该过程正在关闭。你当然可以挖掘伊诺与反编译反射功能的问题,因为我做的事:

enter image description here

+0

不错,尽管我几个月前从.Net切换到Java,但很高兴看到这个解决方案。我记得我曾经遇到过的麻烦。 – Marcus 2011-10-14 11:09:33

0

我可以给你关于如何解决内部异常的一般建议。采取称为反射器(谷歌它)的工具,并进入方法System.Windows.Forms.ListView.Sort()并试图了解什么情况导致异常。这帮了我很多次。

+0

public void Sort() if(this.VirtualMode) { throw new InvalidOperationException(SR。的GetString( “ListViewSortNotAllowedInVirtualListView”)); } this.ApplyUpdateCachedItems();如果(base.IsHandleCreated &&(this.listItemSorter!= null)) { NativeMethods.ListViewCompareCallback pfnCompare = new NativeMethods.ListViewCompareCallback(this.CompareFunc); UnsafeNativeMethods.SendMessage(new HandleRef(this,base.Handle),0x1030,IntPtr.Zero,pfnCompare); } } 在那里做过,你能看到问题吗? :) – Marcus 2010-05-19 13:45:53

0

我认为这是在错误号80131506.搜索的情况下,我已经找到了一些参考:

如果你的应用程序已经使用NET 2,也许ASP.NET编写的,但更重要的是下运行用户的个人资料,然后看看这里:

Microsoft hotfix

我也碰到过有人借此在服务器上的SQL开发是造成问题: SQL DEvloper issues

也有关于在64位机器shown here上发生此问题的讨论。通常涉及访问超出4Gb的内存地址。