Pregunta

Estoy escribiendo un VS2008 complemento (utilizando ETD) que necesita ser notificado después de la solución actual ha terminado de cargar.

He intentado usar el siguiente código:

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

Por desgracia, parece que desde VS2005 el evento se produce cuando la solución empieza a cargar -. Y no cuando termina

Una breve búsqueda de Internet produjo el siguiente hilo que explica el problema y sugerir una solución (comprobar cada elemento de proyecto para ver si se termina de cargar).

¿Es esta la mejor solución disponible o hay una mejor manera de saber cuando una solución ha terminado de cargar?

¿Fue útil?

Solución

He encontrado una solución que resuelve este problema -. He creado un Windows.Forms.Timer que se ejecuta en el hilo principal y comprueba si la solución ha terminado de cargar

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 bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top