在开始一个新项目之后,我想知道Petrel何时完成了新项目的创建。订阅DataManager.WorkspaceOpened事件时,在打开工作空间时调用事件,但这可能不是主线程完成创建新项目的时候。
关于何时知道Petrel何时完成新项目的任何想法?
答案 0 :(得分:2)
也许您可以尝试找到解决潜在问题的另一种方法,而不是监听项目事件?您是否可以进行惰性评估并等待用户实际需要您的代码来执行项目加载后的操作?
有时你可能最终会在一个圈子里追逐这些问题:我需要A在B之后发生,而B在C之后发生,而C在A之后发生。
无论如何......这是一个你可以尝试的黑客IModule:
void WorkspaceOpened(object sender, EventArgs e)
{
Application.Idle += new EventHandler(Application_Idle);
}
void Application_Idle(object sender, EventArgs e)
{
// Deatach from this, since this event can be raised 100 times per second,
// and we only want it once per project.
Application.Idle -= new EventHandler(Application_Idle);
DoMyStuffHereAfterTheProjectHasFinishedOpening();
}