Inilah cara saya melakukan milik saya:
// Any control that causes the Window.Closing even to trigger.
private void MenuItemExit_Click(object sender, RoutedEventArgs e)
{
this.Close();
}
// Method to handle the Window.Closing event.
private void Window_Closing(object sender, CancelEventArgs e)
{
var response = MessageBox.Show("Do you really want to exit?", "Exiting...",
MessageBoxButton.YesNo, MessageBoxImage.Exclamation);
if (response == MessageBoxResult.No)
{
e.Cancel = true;
}
else
{
Application.Current.Shutdown();
}
}
Saya hanya menelepon Application.Current.ShutDown()
dari jendela aplikasi utama, semua jendela lain gunakan this.Close()
. Di jendela utama saya, Window_Closing(...)
menangani x
tombol kanan atas . Jika ada metode yang meminta jendela lebih dekat, Window_Closing(...)
ambil acara untuk dimatikan jika pengguna mengonfirmasi.
Alasan saya sebenarnya menggunakan Application.Current.Shutdown()
di jendela utama saya adalah bahwa saya telah memperhatikan bahwa jika kesalahan desain dibuat dan saya belum menyatakan orangtua dari salah satu jendela saya dalam suatu aplikasi, jika jendela itu dibuka tanpa ditunjukkan sebelumnya ke penutupan jendela aktif terakhir, saya pergi dengan jendela tersembunyi yang berjalan di latar belakang. Aplikasi tidak akan dimatikan. Satu-satunya cara untuk mencegah kebocoran memori yang lengkap adalah bagi saya untuk masuk ke Task Manager untuk mematikan aplikasi. Application.Current.Shutdown()
melindungi saya dari kekurangan desain yang tidak diinginkan.
Itu dari pengalaman pribadi saya. Pada akhirnya, gunakan yang terbaik untuk skenario Anda. Ini hanyalah sepotong informasi.