AggregateException的实例导致TargetInvocationException



我遇到一个问题,一个AggregateException的实例在对Icon资源进行几次访问后会导致TargetInvocationException

我将问题分解为以下步骤来重现(.Net 4.0完整版或客户端配置文件(:

  • 创建一个新的WinForms应用程序(控制台应用程序将无法工作(
  • 向资源中添加任意图标(.ico文件(
  • 将以下代码添加到构造函数中:

    new AggregateException();
    for (var i = 0; ; ++i)
    {
      var icon = Resources.Certificate;
    }
    

您必须将资源名称更改为您的资源名称。

仅此而已<是的,我知道这个样品没有道理。这只是为了说明问题。我的工作代码要复杂得多,所有这些代码都是必需的>

如果不创建此例外,应用程序将运行得更好。但是,如果创建了此异常,则对资源的访问将以TargetInvocationException失败。InnerException告诉我,操作已经成功完成(?!?!(,在System.Drawing.Icon(ctor+Initialize(中有两行堆栈跟踪。

我能做些什么来防止这个问题?

编辑使用Windows7似乎有问题。在Win 7上失败的二进制程序将在Win 8.1中正确运行。

我找到了这个问题的原因:

需要以下系统配置来重现问题:

  • Windows 7德语版
  • 已安装Microsoft.Net Framework 4.5.2(是的,我知道我的二进制文件是根据.Net 4.0编译的(
  • KB2901983已安装

有一台只包含.Net Framework而没有KB2901983的机器,该程序运行良好。安装KB2901983后,程序会因相同的二进制文件而失败(无需重新编译(。

我试图卸载KB2901983,但它没有帮助。如果一旦安装,程序就会失败。我在一个干净的Windows7德语版上测试了它。

相关内容

  • 没有找到相关文章

最新更新