Wiele osób uważa, że zamknięcie aplikacji powinno być proste, na przykład Application.Exit() w formularzu Windows; Metoda może rozwiązać problem, ale nie nadużywaj jej w WPF, ponieważ klasa Application nie ma tej metody w WPF, ale istnieje sterownik Exit event, a zamknięcie programu w aplikacji WPF zwraca dużą uwagę:
Zamknięcie w aplikacji WPF ma ustawienie właściwości ShutdownMode, z wartościami 3 typów enum:
1) OnLastWindowZamknij aplikację po zamknięciu ostatniego formularza
2) OnMainWindowZamknij aplikację, gdy główna forma aplikacji zostanie zamknięta
3) OnExplicitShutdown pokazuje zakończenie połączenia
W trybie OnExplicitShutdown metoda ShutDown, która wywołuje instancję aplikacji, musi być wyświetlana
Na przykład: Application.Current.Shutdown(-1); Tutaj Application.Current zwraca aktualną instancję aplikacji tej aplikacji.
Należy zauważyć, że powyższe nie dotyczy XBAP, który automatycznie zamyka się po zamknięciu przeglądarki.
- <Window x:Class="WpfFistDemo.MainWindow"
- xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
- xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
- Title="MainWindow" Height="350" Width="525" Loaded="windows_load" Closing="Window_Closing" >
- <Grid>
- </Grid>
- </Window>
Skopiuj kod- private void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e)
- {
- System.Environment.Exit(System.Environment.ExitCode);
- }
Skopiuj kod Jeśli okno rozpoczyna podwątek: Application.Current.Shutdown(); Nie wyłącza procesu aplikacji, System.Environment.Exit(System.Environment.ExitCode); To zamknie wszystkie procesy podrzędne i zakończy proces!
|