[Jacek Śliwerski]
(rzyjontko)Autor
Chłopak z Bałut (Dołów), po uniwerku i stypendium. Wiecznie zestresowane, przemądrzałe bezguście. Więcej na stronie domowej.
Iwenty w wiżułal studio
Kolega z zespołu pracuje nad rozszerzeniem Visual Studio. A ponieważ to bardzo cierpliwy i spokojny człowiek, co kilkanaście minut wyrzuca z siebie coś a'la "To przecież chore", albo "Tego nie ma". Dzisiaj pokazał mi coś, w co sam nie byłem po prostu w stanie uwierzyć.
Problem pojawił się kilka tygodni temu wraz ze zgłoszeniem, że zamykanie projektu nie czyści niektórych okien. Zgłoszenie zostało już dawno zamknięte mimo braku pełnego rozwiązania wraz z opisem, że do zamknięcia projektu należy najpierw pozamykać ręcznie wszystkie pozostałe okna. W przeciwnym przypadku nie odpalało się po prostu odpowiednie zdarzenie.
Dzisiaj kolega trafił przypadkiem na rozwiązanie. Okazało się, że zamiast podpinać się pod zdarzenie w ten sposób:
_applicationObject.Events.SolutionEvents.Opened += ...
należy najpierw przypisać sobie sam event do zmiennej, a następnie podpiąć odpowiedni handler do tej zmiennej np w ten sposób:
Events2 events;
SolutionEvents solutionEvents;
events = (Events2)_applicationObject.Events;
solutionEvents = events.SolutionEvents;
solutionEvents.Opened += ...
Szczena mi opadła, jak to zobaczyłem. Pierwszą myślą było, że może to pewnie ze względu na to rzutowanie - nie jestem nadal pewien, czy można przeciążać zdarzenia, ale wydawało mi się to niewykluczone. Wstawiliśmy więc rzutowanie do pierwotnego rozwiązania - nic nie dało. Nie wiem, po prostu nie mam absolutnie zielonego pojęcia dlaczego tak jest.
03 listopada 2006, 19:23:57