Saya sudah punya aplikasi
Process.Start()
untuk memulai aplikasi lain 'ABC'. Saya ingin menunggu sampai aplikasi itu berakhir (proses mati) dan melanjutkan eksekusi saya. Bagaimana saya bisa melakukannya?
Mungkin ada beberapa contoh aplikasi 'ABC' yang berjalan pada saat yang sama.
Jawaban:
Saya pikir Anda hanya menginginkan ini:
Lihat halaman MSDN untuk metode ini. Ini juga memiliki kelebihan di mana Anda dapat menentukan batas waktu, sehingga Anda tidak berpotensi menunggu selamanya.
sumber
Gunakan
Process.WaitForExit
? Atau berlanggananProcess.Exited
acara jika Anda tidak ingin memblokir? Jika itu tidak sesuai keinginan Anda, beri kami informasi lebih lanjut tentang persyaratan Anda.sumber
WaitForExit
pertama ... dalam beberapa kasus Anda mungkin ingin mengeksekusi lebih banyak kode ketika sesuatu selesai, tetapi itu tidak berarti Anda perlu memblokir utas saat ini.Process.Exited
acara tersebut, saya yakin Anda harus mengonfigurasi proses sebelumnya dengan menyetelProcess.EnableRaisingEvents
ke true. Padahal, mengingat pertanyaan ini sudah berusia lebih dari tiga tahun, mungkinProcess.EnableRaisingEvents
itu bukan pertanyaan yang diajukan pada saat itu.Process.Exited
acara. Terima kasih! +1 untuk kelengkapanSaya melakukan hal berikut dalam aplikasi saya:
Ada beberapa fitur tambahan di sana yang mungkin berguna bagi Anda ...
sumber
Anda bisa menggunakan tunggu untuk keluar atau Anda dapat menangkap properti HasExited dan memperbarui UI Anda agar pengguna "mendapat informasi" (manajemen ekspektasi):
sumber
Saya punya kasus di mana
Process.HasExited
tidak berubah setelah menutup jendela milik proses. BegituProcess.WaitForExit()
juga tidak berhasil. Saya harus memonitorProcess.Responding
yang salah setelah menutup jendela seperti itu:Mungkin ini membantu seseorang.
sumber
Process.WaitForExit seharusnya hanya apa yang Anda cari, saya pikir.
sumber
Mengacu pada contoh Microsoft: [ https://docs.microsoft.com/en-us/dotnet/api/system.diagnostics.process.enableraisingevents?view=netframework-4.8]
Yang terbaik adalah mengatur:
selain itu Kode akan diblokir. Juga tidak diperlukan properti tambahan.
sumber
Seperti yang dikatakan Jon Skeet, gunakan
Process.Exited
:sumber
Coba ini:
sumber