2

我的 (VSTO) Visio 2010 加载项有一个非常奇怪的问题。插件按顺序处理许多 visio vsd 文件。我基本上做的是循环遍历给定文件夹中的所有 vsd 文件。对于此文件夹中的每个 vsd 文件,我执行 openEx(..),然后循环遍历此文件中的所有形状对象。我从每个形状中读取数据,并扩展特定形状的功能(将 shapesheet 单元格添加到形状)。然后我执行 visioDiagram.save() 和 visioDiagram.close()。然后我打开下一个 vsd 文件并对其执行相同的操作。当我在 Visual Studio 2010 中调试时,插件运行大约 400 个文件,并且每次在文件 400 或 415 之间运行,在我 save() 和 close() 实际的 visio 图并尝试打开下一个图之后,出现以下消息:

检测到 DisconnectedContext

消息:上下文 0x3f4fc8' 已断开连接。从当前上下文(上下文 0x3f5138)释放接口。这可能会导致损坏或数据丢失。为避免此问题,请确保所有上下文/单元保持活动状态,直到应用程序完全使用代表它们内部的 COM 组件的 RuntimeCallableWrapper 完成。(上下文 0x3f5138)。这可能会导致损坏或数据丢失。为避免此问题,请确保所有上下文/单元保持活动状态,直到应用程序完全使用代表它们内部的 COM 组件的 RuntimeCallableWrapper 完成。

伪代码:

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();
}
4

0 回答 0