8

Szukam zdarzenia/interfejsu, który będzie mnie powiadamiał, gdy wszystkie projekty załadują się do rozwiązania po otwarciu rozwiązania.Rozszerzenie Visual Studio: Poczekaj, aż wszystkie projekty zakończą ładowanie za pomocą IVsSolutionEvents OnAfterOpenSolution

Zaimplementowałem interfejs OnAfterOpenSolution w interfejsie IVsSolutionEvents2. To jest wywoływane natychmiast po otwarciu rozwiązania ... więc każdy kod uruchamiany przeciwko wątkowi UI, nawet asycnronnie, blokuje IDE przed załadowaniem projektu (ów).

Czy istnieje podobna technika wdrażania `OnAfterOpenSolution', która jest wywoływana po otwarciu wszystkich projektów rozwiązania?

Odpowiedz

5

Zdarzenie OnAfterBackgroundSolutionLoadComplete w interfejsie IVsSolutionLoadEvents jest uruchamiane po zakończeniu wszystkich projektów rozwiązania. Wdrożenie tego będzie wymagało wdrożenia lub rozszerzenia implementacji jednego z interfejsów IVsSolutionEvents w celu dołączenia zdarzenia za pomocą metody IVsSolution.AdviseSolutionEvents (..).

Po dalszych badaniach w tej dziedzinie, OnAfterBackgroundSolutionLoadComplete występuje tylko wtedy, gdy projekty są ustawione do ładowania w tle. Jeśli ładowanie tła zostało wyłączone, zdarzenie to nie wystąpi. Najprawdopodobniej będziesz musiał również wdrożyć IVsSolutionLoadManager i upewnić się, że co najmniej 1 projekt ma priorytet obciążenia w tle, jeśli zamierzasz polegać na zdarzeniu OnAfterBackgroundSolutionLoadComplete lub przełączać się w zależności od tego, w jaki sposób użytkownik ustawił priorytet ładowania.

Powiązane problemy