我遇到一个问题,AggregateException
的实例在对Icon资源进行几次访问后会导致TargetInvocationException
。
我将问题分解为以下步骤以重现(.Net 4.0完整版或客户端配置文件):
将以下代码添加到构造函数中:
new AggregateException();
for (var i = 0; ; ++i)
{
var icon = Resources.Certificate;
}
您必须将资源名称更改为资源名称。
这就是全部。 是的我知道这个样本没有意义。这只是为了说明问题。我的工作代码要复杂得多,所有这些代码都是必需的。
如果不创建此版本,应用程序将会正常工作。但是,如果创建了此异常,则对TargetInvocationException
的资源访问将失败。 InnerException
告诉我操作已成功完成(?!?!),在System.Drawing.Icon(ctor + Initialize)中有两行堆栈跟踪。
我该怎么做才能防止这个问题?
修改 使用Windows 7似乎是一个问题。在Win 7上失败的二进制文件将在Win 8.1中正确运行。
答案 0 :(得分:0)
我找到了这个问题的原因:
需要以下系统配置才能重现此问题:
如果一台机器只包含没有KB2901983的.Net Framework,那么程序运行正常。安装KB2901983后,程序对同一个二进制文件失败(无需重新编译)。
我尝试卸载KB2901983,但它没有帮助。如果它一旦安装,程序将失败。我在干净的Windows 7德语版上进行了测试。