Visual Studio插件:如何知道解决方案何时加载完成

3
我是一个使用DTE编写VS2008插件的开发者,需要在当前解决方案加载完成后得到通知。
我尝试使用以下代码:
events = (Events2) applicationObject.Events
events.SolutionEvents.Opened += DoSomeWorkEvent;

很不幸的是,自从VS2005以来,该事件在解决方案开始加载时抛出,而不是在加载完成时抛出。

短暂的互联网搜索产生了以下线程,解释了问题并提出了一种解决方案(检查每个项目项是否已完成加载)。

这是可用的最佳解决方案还是有更好的方法来知道解决方案何时完成加载?

1个回答

4
我找到了一个解决这个问题的方法-我创建了一个运行在主线程上的 Windows.Forms.Timer,它会检查解决方案是否已经加载完成。
private void TimerTick(object sender, EventArgs e)
{
   try
   {
       var solution = applicationObject.Solution;
       if (solution.IsOpen && string.IsNullOrEmpty(solution.FileName) == false)
       {
           timer.Stop();
           // insert logic here
       }
   }
   catch (Exception exception)
   {
       Console.WriteLine(exception);
   }
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接