【发布时间】:2015-04-07 08:32:39
【问题描述】:
我想知道是否有人在 .NET 项目中专门为 Visio 处理托管代码加载项。我正在搞乱一个,并试图从 Shape 对象中删除超链接。删除它们工作正常,如果用户保存,那么一切正常。当用户不保存并且在关闭之前由 Visio 提示存在未保存的更改并想知道用户想要做什么时,就会出现问题。如果用户选择“不保存”并尝试退出,则 Visio 应用程序会因未处理的 Win32 异常而崩溃,我已在 Windows 事件查看器中追溯到异常代码:0xc0000005。事实证明这是一个“访问冲突错误”。我发现问题是一行代码调用形状的超链接集合上的 Delete 方法(下面的示例)。有人知道这里发生了什么吗?这是我在 Google 上找不到的 MS 错误吗?希望我在这里为你们提供足够的信息。没想到我需要发布一堆代码,因为我发现只有这行代码在 Visio 尝试在不保存后退出时产生异常。我发现这会产生与 Microsoft.Office.Interop.Visio.dll 版本 12 和 14 完全相同的错误。
internal static Nullable<Boolean> DeleteFirstHyperlink(Shape shape) {
if(true){ //a condition to pass
shape.Hyperlinks.get_ItemU(0).Delete();
return true;
}
else{
return false;
}
}
【问题讨论】: