代码之家  ›  专栏  ›  技术社区  ›  Dror Helper

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

  •  3
  • Dror Helper  · 技术社区  · 15 年前

    我正在编写一个VS2008外接程序(使用DTE),它需要在当前解决方案完成加载后得到通知。

    我尝试使用以下代码:

    events = (Events2) applicationObject.Events
    events.SolutionEvents.Opened += DoSomeWorkEvent;
    

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

    简短的互联网搜索产生了 following thread 这就解释了问题并提出了解决方案(检查每个项目项以查看它是否完成加载)。

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

    1 回复  |  直到 15 年前
        1
  •  4
  •   Dror Helper    15 年前

    我找到了解决这个问题的方法——我创建了一个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);
       }
    }