在我的Silverlight 5应用程序中,我收到的ArgumentNullException没有有用的堆栈跟踪。我只是看到:
System.ArgumentNullException occurred
Message=Value cannot be null.
Parameter name: key
StackTrace:
at System.Collections.Generic.Dictionary`2.FindEntry(TKey key)
at System.Windows.dll!MS.Internal.JoltHelper.FireEvent(System.IntPtr unmanagedObj, System.IntPtr unmanagedObjArgs, int argsTypeIndex, int actualArgsTypeIndex, string eventName, uint flags) + 0x31b bytes
尽我所能,我找不到任何未捕获的异常来抓住!我已经禁用了Just My Code,我将调试器设置为Break in Thrown以用于所有异常,并且我在我的代码中找到了可能发生这种情况的任何地方。我找不到任何方法来弄清楚它来自哪里。它必须是一个后台Silverlight线程应用资源,或者自动执行某些操作,但我无法弄清楚是什么。
具体方案是通过XAML或代码创建控件。通过XAML,他们工作正常。当我通过代码创建它时,我得到了这个神秘的例外。
帮助!
答案 0 :(得分:1)
我遇到了同样的问题,我在我的案例中找出了失败的确切原因。我们正在使用Telerik RadRichTextBoxRibbonUI
控件,并且有人在XAML中为{x:Null}
属性设置了值ApplicationName
。当我用字符串值替换{x:Null}
时,问题就解决了。
答案 1 :(得分:-1)
在字典上使用锁定以确保在任何给定时间只有一个线程正在访问它。当多个线程访问同一个Dictionary并使其损坏时,会发生此异常,从而导致内部结构在存储桶中具有空条目。