Saya memiliki aplikasi yang diterbitkan dalam C #. Masalahnya di sini adalah setiap kali saya menutup formulir utama dengan mengklik tombol keluar merah, itu menutup formulir tetapi tidak menutup aplikasi. Saya mengetahui hal ini ketika saya mencoba mematikan komputer, berharap aplikasi yang saya buat berjalan dengan lancar kemudian saya dihujani oleh banyak jendela anak yang saya gunakan untuk memasang MessageBox
Alerts.
Saya mencoba Application.Exit
tetapi masih memanggil semua jendela anak dan lansiran dan saya tidak tahu cara menggunakan Environment.Exit
dan bilangan bulat mana yang harus dimasukkan.
Omong-omong, setiap kali formulir saya memanggil formclosed
atau form closing
acara saya menutup aplikasi dengan this.Hide()
fungsi; Apakah itu memengaruhi perilaku aplikasi saya sekarang?
Jawaban:
Dari MSDN:
Aplikasi. Keluar
Lingkungan. Keluar
Artikel ini, Application.Exit vs Environment.Exit , menunjukkan tip yang bagus:
Anda dapat menentukan apakah
System.Windows.Forms.Application.Run
telah dipanggil dengan memeriksaSystem.Windows.Forms.Application.MessageLoop
properti. Jika benar, maka Jalankan telah dipanggil dan Anda dapat menganggap bahwa aplikasi WinForms sedang mengeksekusi sebagai berikut.Referensi: Mengapa Application.Exit gagal berfungsi?
sumber
Application.Exit()
gagal keluar dari aplikasi, namunEnvironment.Exit(1)
berfungsi seperti pesona.Environment.Exit(0)
Setiap nilai bukan-nol dimaksudkan sebagai kode kesalahan khusus aplikasi yang dapat digunakan oleh skrip untuk mengambil tindakan yang sesuai. (Ini adalah kode baru dan aplikasi WinForms, jadi tidak mungkin menjadi masalah dalam kasus ini, tetapi baik untuk diketahui bagi siapa pun yang menulis alat baris perintah.)Environment.Exit
dapat digunakan untuk aplikasi formulir juga.return
pernyataan setelahnya akan banyak meningkatkan pendekatan ini. Seperti yang saya pahami kode akan melanjutkan eksekusi setelahApplication.Exit()
sampaireturn
pernyataan.Saya tahu ini bukan masalah yang Anda miliki, namun alasan lain ini bisa terjadi adalah Anda membuka utas non latar di aplikasi Anda.
Ketika
IsBackground
adalahfalse
itu akan menjaga program anda buka sampai selesai benang, jika Anda mengaturIsBackground
untuktrue
benang tidak akan menjaga program terbuka. Hal-hal sepertiBackgroundWoker
,,ThreadPool
danTask
semua internal menggunakan utas denganIsBackground
set ketrue
.sumber
Yang kamu butuhkan adalah
System.Environment.Exit(1);
Dan ia menggunakan namespace sistem "menggunakan Sistem" yang hampir selalu ada ketika Anda memulai sebuah proyek.
sumber
Saya akan melakukan salah satu dari yang berikut:
untuk winform atau
untuk aplikasi konsol (juga berfungsi pada winforms).
Terima kasih!
sumber
Singkatnya, ya. Seluruh aplikasi akan berakhir ketika formulir utama (formulir dimulai melalui
Application.Run
dalamMain
metode) ditutup (tidak disembunyikan).Jika seluruh aplikasi Anda harus selalu berakhir sepenuhnya setiap kali formulir utama Anda ditutup, maka Anda hanya perlu menghapus formulir itu penangan tertutup. Dengan tidak membatalkan acara itu dan membiarkannya menutup ketika pengguna menutupnya, Anda akan mendapatkan perilaku yang Anda inginkan. Adapun semua bentuk lainnya, jika Anda tidak berniat menunjukkan contoh yang sama lagi, Anda cukup membiarkannya ditutup, alih-alih mencegah penutupan dan menyembunyikannya. Jika Anda menunjukkannya lagi, menyembunyikannya mungkin baik-baik saja.
Jika Anda ingin agar pengguna mengklik "x" untuk formulir utama Anda, tetapi biarkan formulir lain tetap terbuka dan, pada dasarnya, menjadi bentuk utama "baru", maka itu sedikit lebih rumit. Dalam kasus seperti itu, Anda hanya perlu menyembunyikan formulir utama daripada menutupnya, tetapi Anda harus menambahkan semacam mekanisme yang benar - benar akan menutup formulir utama saat Anda benar-benar ingin aplikasi Anda berakhir. Jika ini situasi yang Anda hadapi maka Anda perlu menambahkan lebih banyak detail pada pertanyaan Anda yang menjelaskan jenis aplikasi apa yang harus dan tidak seharusnya mengakhiri program.
sumber
Lakukan apa yang kamu lakukan:
di Main Anda ()?
Saya menemukan ini cara yang sangat mudah untuk mematikan aplikasi ketika formulir ditutup.
sumber
sumber
Dalam hal ini, cara yang paling tepat untuk keluar dari aplikasi untuk mengganti metode onExit () di App.xaml.cs:
sumber