我的(VSTO)Visio 2010加载项存在一个非常奇怪的问题。 AddIn顺序处理许多visio vsd文件。我基本上做的是通过给定文件夹中的所有vsd文件循环。对于此文件夹中的每个vsd文件,我执行openEx(..)然后循环遍历此文件中的所有Shape-Objects。我从每个形状读取数据,并为特定形状扩展功能(将形状单元格添加到形状)。然后我做visioDiagram.save()和visioDiagram.close()。然后我打开下一个vsd文件并为它做同样的事情。当我在Visual Studio 2010中调试时,AddIn运行大约400个文件,每次在文件400或415之间运行,在我保存()并关闭()实际的visio图并尝试打开下一个图之后,会出现以下消息:
检测到DisconnectedContext
消息:上下文0x3f4fc8'已断开连接。释放接口 从当前上下文(上下文0x3f5138)。这可能会导致腐败 或数据丢失。为避免此问题,请确保全部 上下文/公寓保持活跃,直到应用程序完成 使用表示COM组件的RuntimeCallableWrappers 活在他们身边。 (上下文0x3f5138)。这可能会导致损坏或数据 失利。为避免此问题,请确保全部 上下文/公寓保持活跃,直到应用程序完成 使用表示COM组件的RuntimeCallableWrappers 活在他们身上。
伪代码:
Foreach (visioFile in visioFiles)
{
openedVisioFile = Visio.Documents.openEx(visioFile.vsd,..)
Foreach(visioShape in openedVisioFile.Shapes)
{
Read shape properties;
Write properties in a dictionary;
}
openedVisioFile.save();
openedVisioFile.close();
}