Question

J'écris un VS2008 add-in (en utilisant DTE) qui doit être notifiée après la solution actuelle a terminé le chargement.

Je l'ai essayé d'utiliser le code suivant:

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

Malheureusement, il semble que depuis VS2005 l'événement est lancé lorsque la solution commence à charger -. Et non quand il finit

Une courte recherche Internet a produit le suivant fil qui explique le problème et de proposer une solution (vérifier chaque élément de projet pour voir si elle a terminé le chargement).

Est-ce la meilleure solution disponible ou est-il une meilleure façon de savoir quand une solution a terminé le chargement?

Était-ce utile?

La solution

Je l'ai trouvé une solution qui résout ce problème -. J'ai créé un Windows.Forms.Timer qui fonctionne sur le thread principal et vérifie si la solution a terminé le chargement

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);
   }
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top