2009-09-30 7 views
3

J'écris un complément VS2008 (en utilisant DTE) qui doit être notifié après le chargement de la solution actuelle.Complément Visual Studio: Comment savoir quand une solution a fini de charger

J'ai essayé en utilisant 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 se termine.

Une courte recherche sur Internet a produit le following thread qui explique le problème et suggère une solution (vérifiez chaque élément du projet pour voir si le chargement est terminé).

Est-ce la meilleure solution disponible ou existe-t-il un meilleur moyen de savoir quand une solution a fini de charger?

Répondre

4

J'ai trouvé une solution de contournement qui résout ce problème - J'ai créé un Windows.Forms.Timer qui s'exécute sur le thread principal et vérifie si le chargement de la solution est terminé.

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); 
    } 
} 
Questions connexes