Visual Studio Add-In: Wie kann ich wissen, wenn eine Lösung fertig geladen ist
-
19-09-2019 - |
Frage
Ich schreibe ein VS2008-Add-In (mit DTE), die benachrichtigt werden muss, nachdem die aktuelle Lösung vollständig geladen ist.
Ich habe versucht, den folgenden Code:
events = (Events2) applicationObject.Events
events.SolutionEvents.Opened += DoSomeWorkEvent;
Leider scheint es seit VS2005, dass das Ereignis ausgelöst wird, wenn die Lösung zu laden beginnt -. Und nicht, wenn es fertig ist
Eine kurze Suche im Internet produzierte die folgenden Threads , die das Problem und eine Lösung vorschlagen (überprüfen jedes Projektelement zu sehen, ob es fertig geladen).
Ist dies die beste Lösung zur Verfügung, oder gibt es einen besseren Weg, zu wissen, wann eine Lösung vollständig geladen ist?
Lösung
Ich habe eine Abhilfe gefunden, das dieses Problem löst. - Ich habe eine Windows.Forms.Timer erstellt, die auf dem Haupt-Thread ausgeführt wird und prüft, ob die Lösung fertig geladen ist
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);
}
}