我有一个最初为Petrel 2011编写的插件。最近,我们需要在Petrel 2012上使用它。我已经将调试器连接到Petrel并确认插件正在加载并且模块上的Initialize()正在调用。这只是向DataManager.DataSourceManager.Saved事件添加一个事件处理程序。
使用Petrel 2011,此事件将在保存过程结束时触发。然而,在2012年,这一事件似乎不再被解雇。
我是否应该在2012年使用新事件来检测项目何时被保存?最好与2011年兼容。
答案 0 :(得分:2)
好的,我在2012年发行说明中找到了答案,附录A:
“每次创建一个新工作区时(创建一个新项目或加载一个项目时),它都需要自己的DataSourceManager。因此,缓存DataSourceManager显然不再起作用了,并且应该对DataSourceManager.Saved事件进行描述。每次打开项目时。最好的地方是在DataManager.WorkspaceEvent.Opened事件处理程序中。“
对我有用的解决方案是:
public void Initialize()
{
DataManager.WorkspaceOpened += ProjectOpened;
}
private void ProjectOpened(object sender, EventArgs e)
{
DataManager.DataSourceManager.Saved += DataSourceManagerSaved;
}
private void DataSourceManagerSaved(object sender, EventArgs e)
{
whatever needs doing on save...
}