Pergunta

Eu estou escrevendo um VS2008 add-in (usando DTE) que precisa ser notificado após a solução atual tem carregamento acabado.

Eu tentei usar o seguinte código:

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

Infelizmente, parece que, desde VS2005 o evento é acionada quando a solução começa a carregar. - E não quando termina

Uma busca curta internet produziu o seguinte discussão que explica o problema e sugerir uma solução (verificar cada item de projeto para ver se o carregamento terminado).

É esta a melhor solução disponível ou se existe uma maneira melhor para saber quando uma solução tem de carregamento acabado?

Foi útil?

Solução

Eu encontrei uma solução que resolve este problema -. Eu criei um Windows.Forms.Timer que é executado no thread principal e verifica se a solução tem de carregamento acabado

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);
   }
}
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top