【问题标题】:Troubleshooting background Silverlight exceptions对后台 Silverlight 异常进行故障排除
【发布时间】:2012-05-10 02:50:01
【问题描述】:

在我的 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 on Thrown 针对所有异常,并且我已经在我的代码中寻找可能发生这种情况的任何地方。我只是找不到任何方法来弄清楚它来自哪里。它必须是应用资源的后台 Silverlight 线程,或者以其他方式自动执行某些操作,但我不知道是什么。

具体方案是通过 XAML 或通过代码创建控件。通过 XAML,它们可以正常工作。当我通过代码创建它们时,我得到了这个神秘的异常。

救命!

【问题讨论】:

  • 您的代码中是否调用了 Dictionary.FindEntry?
  • 在我的任何代码中都没有直接调用 FindEntry。这就是为什么我想知道这是否是由 XAML 引擎在幕后完成的。
  • 我唯一能想到的就是你订阅了一个带有 null 的事件......
  • 我放弃并重组了一些东西。我没有真正理解如何摆脱错误。感谢人们的建议!
  • 嗨,Arian,如果您能告诉我您所做的重组是什么,那将非常有帮助。即使我面临同样的问题,也不知道可能出了什么问题..这发生在为我打开新对话框时..

标签: c# silverlight xaml argumentnullexception


【解决方案1】:

我遇到了同样的问题,并且我找出了我的案例失败的确切原因。我们正在使用 Telerik RadRichTextBoxRibbonUI 控件,并且有人将值 {x:Null} 分配给 XAML 中的 ApplicationName 属性。当我将{x:Null} 替换为字符串值时,问题就解决了。

【讨论】:

    【解决方案2】:

    在字典上使用锁以确保在任何给定时间只有一个线程在访问它。当多个线程访问同一个 Dictionary 并对其进行破坏时,可能会发生此异常,从而导致内部结构在存储桶中具有空条目。

    How is this Dictionary<TKey, TValue> exception possible?

    【讨论】:

      猜你喜欢
      • 2010-09-08
      • 1970-01-01
      • 2019-12-22
      • 1970-01-01
      • 2012-08-07
      • 1970-01-01
      • 2020-10-02
      • 2011-02-07
      • 2013-11-20
      相关资源
      最近更新 更多