Dalam beberapa tahun saya telah menggunakan C # (Windows Forms), saya tidak pernah menggunakan WPF. Tapi, sekarang saya suka WPF, tapi saya tidak tahu bagaimana saya harus keluar dari aplikasi saya ketika pengguna mengklik item menu Keluar dari menu File.
Saya telah mencoba:
this.Dispose();
this.Exit();
Application.ShutDown();
Application.Exit();
Application.Dispose();
Di antara banyak lainnya. Tidak ada yang berhasil.
Application.Current.Shutdown();
fonction Anda tidak akan segera kembali. Anda perlu meneleponreturn;
juga untuk ini.Application
TIDAK BUKAN kelas statis. Memiliki anggotaApplication.Current
statis tidak berarti itu statis. Sebaliknya, ini adalah kelas normal yang bisa diturunkan.Jika Anda benar - benar membutuhkannya untuk menutup, Anda juga dapat menggunakan Environment.Exit () , tetapi tidak anggun sama sekali (lebih seperti mengakhiri proses).
Gunakan sebagai berikut:
sumber
Environment.Exit()
membutuhkan setidaknya satu parameter, kode keluar. GunakanEnvironment.Exit(0)
jika Anda tidak khawatir tentang kode keluar.Application.Current.Shutdown();
Application.Current.Shutdown();
sayaClosing
dipanggil, ketika saya hanya ingin mematikan aplikasi saya segera. JadiEnvironment.Exit(0);
itu pilihan yang lebih baik.Seperti yang dikatakan wuminqi ,
Application.Current.Shutdown();
tidak dapat dipulihkan, dan saya percaya ini biasanya digunakan untuk memaksa aplikasi untuk menutup pada saat-saat seperti ketika pengguna keluar atau mematikan Windows.Sebaliknya, panggil
this.close()
di jendela utama Anda. Ini sama dengan menekan Alt+ F4atau tombol tutup [x] pada jendela. Ini akan menyebabkan semua jendela yang dimiliki lainnya ditutup dan akan berakhir memanggilApplication.Current.Shutdown();
selama tindakan penutupan tidak dibatalkan. Silakan lihat dokumentasi MSDN tentang Menutup Jendela .Selain itu, karena
this.close()
dapat dibatalkan Anda dapat memasukkan dialog konfirmasi perubahan simpan di penangan peristiwa penutup. Cukup buat event handler untuk<Window Closing="...">
dan ubahe.Cancel
sesuai. (Lihat dokumentasi MSDN untuk detail lebih lanjut tentang cara melakukan ini.)sumber
Gunakan salah satu dari yang berikut ini sesuai kebutuhan:
1.
2.
Di atas semua metode akan memanggil
closing event
dariWindow
kelas dan eksekusi mungkin berhenti di beberapa titik (penyebab biasanya aplikasi menempatkan dialog seperti 'apakah Anda yakin?' Atau ' bahasa Apakah Anda ingin menyimpan data sebelum penutupan? ', Sebelum jendela ditutup sepenuhnya)3. Tetapi jika Anda ingin menghentikan aplikasi tanpa peringatan segera. Gunakan di bawah ini
sumber
Ini harus melakukan trik:
Jika Anda tertarik, inilah beberapa bahan tambahan yang menurut saya bermanfaat:
Detail tentang Aplikasi. Saat Ini
Siklus Aplikasi WPF
sumber
Inilah cara saya melakukan milik saya:
Saya hanya menelepon
Application.Current.ShutDown()
dari jendela aplikasi utama, semua jendela lain gunakanthis.Close()
. Di jendela utama saya,Window_Closing(...)
menanganix
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.
sumber
Seharusnya tidak ada pesan
Application.ShutDown();
atau.Exit()
pesan.Application
adalah kelas statis. Itu tidak merujuk ke aplikasi saat ini. Anda perlu membuka aplikasi saat ini dan kemudian mematikannya seperti ini:sumber
Cara lain Anda bisa melakukan ini:
Ini akan memaksa mematikan aplikasi Anda. Selalu berfungsi, bahkan dalam aplikasi multi-utas.
Catatan: Berhati-hatilah untuk tidak kehilangan data yang belum disimpan di utas lainnya.
sumber
sumber
Mencoba
Untuk saya
tidak bekerja
sumber
Menurut pemahaman saya,
Application.Current.Shutdown()
juga ada kekurangannya.Jika Anda ingin menampilkan jendela konfirmasi untuk membiarkan pengguna mengonfirmasi saat keluar atau tidak, tidak
Application.Current.Shutdown()
dapat dibatalkan.sumber
Application.Current.Shutdown()
.Ringkasnya, ada beberapa cara untuk melakukan itu.
1) Membunuh proses, yang melewatkan finalisasi, penanganan kesalahan dll:
2) Mematikan aplikasi saat ini, yang mungkin merupakan cara yang tepat karena memanggil peristiwa keluar:
atau
(ketika diklik dalam instance App-class)
3) Menutup aplikasi saat ini (semua formulir harus ditutup / selesai sebelumnya):
(ketika diklik dalam instance App-class)
4) Keluar dari lingkungan, yang menghentikan aplikasi:
Juga, Anda mungkin ingin membaca tentang status keluar di sini
sumber
Caliburn beraroma mikro
sumber
Jika Anda ingin keluar dari utas lain yang tidak membuat objek aplikasi gunakan:
sumber
Application.Current.ShutdownMode = ShutdownMode.OnExplicitShutdown;
sumber
Dari kode xaml Anda dapat memanggil SystemCommand yang telah ditentukan:
Saya pikir ini harus menjadi cara yang disukai ...
sumber