Visual Studio Add-in: Como eu sei quando uma solução tem de carregamento acabado
-
19-09-2019 - |
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?
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);
}
}