Visual Studio Add-In: Comment puis-je savoir quand une solution a terminé le chargement
-
19-09-2019 - |
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?
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);
}
}