2009-01-14 14 views

Odpowiedz

29

obchodzić następujące zdarzenie:

Microsoft.Win32.SystemEvents.DisplaySettingsChanged 

może odnosić się do this stronie więcej szczegółów.

Możesz również zobaczyć msdn article w klasie SystemEvents.

6

Dostępne są dwa zdarzenia - SystemEvents.DisplaySettingsChanged i SystemEvents.DisplayedSettingsChanging, z którymi można sobie poradzić. Należy pamiętać, że oba zdarzenia są statyczne i konieczne będzie odłączenie procedur obsługi przed wyjściem z programu.

+6

"zanim wyjdziesz ze swojego programu, musisz odłączyć swoje ładowarki": oczywiście, że nie! Gdy proces się zatrzyma, nie ma znaczenia, czy anulujesz subskrypcję czy nie ... Po prostu obiekty subskrybowane przez to wydarzenie nie będą kwalifikowały się do GC i pozostaną w pamięci –

+0

Musisz odłączyć swoje procedury obsługi przed obiektem obsługi będzie GCed. Jeśli proces zakończy się, nie ma znaczenia. Jeśli Twoja aplikacja będzie nadal działać po tym, jak przestaniesz dbać o zmiany w wyświetleniach, w tym momencie zrezygnuj z subskrypcji, aby GC działał poprawnie. – user169771

+2

Dokumentacja mówi: "Ponieważ jest to zdarzenie statyczne, musisz odłączyć procedury obsługi zdarzeń, gdy aplikacja zostanie usunięta, lub nastąpi wyciek pamięci.". https://msdn.microsoft.com/en-us/library/microsoft.win32.systemevents.displaysettingschanged.aspx?f=255&MSPPError=-2147217396 – CLS

4

Oczywiście nie musisz rezygnować z subskrypcji zdarzeń statycznych (lub innych zdarzeń), jeśli twój program (proces) umiera. OS zajmie się zwolnieniem całej pamięci twojego procesu do systemu operacyjnego. Jeśli jednak subskrybujesz statyczne zdarzenie lub jakiekolwiek zdarzenie wskazujące obiekt o dłuższym czasie życia niż subskrybowanie obiektu, a chcesz, aby ten obiekt kwalifikował się do GC, musisz anulować subskrypcję (- =) na zdarzenie.

I zawsze dobrą praktyką jest zawsze wypisywać się ze wszystkich wydarzeń. Nigdy nie wiesz, kiedy żywotność twoich obiektów zostanie zmieniona (przez kogoś innego) w trakcie cyklu życia twojego kodu źródłowego/produktu ...