2010-05-19 87 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的內存地址。