Process.WaitForExit Metode
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
Mengatur periode waktu untuk menunggu proses terkait keluar, dan memblokir utas eksekusi saat ini hingga waktu berlalu atau proses telah keluar. Untuk menghindari pemblokiran utas saat ini, gunakan Exited peristiwa .
Untuk contoh kode, lihat StandardError halaman referensi properti dan ExitCode .
Overload
WaitForExit() |
Menginstruksikan Process komponen untuk menunggu tanpa batas waktu hingga proses terkait keluar. |
WaitForExit(Int32) |
Menginstruksikan Process komponen untuk menunggu jumlah milidetik yang ditentukan agar proses terkait keluar. |
WaitForExit(TimeSpan) |
Menginstruksikan komponen Proses untuk menunggu jumlah waktu yang ditentukan agar proses terkait keluar. |
WaitForExit()
- Sumber:
- Process.cs
- Sumber:
- Process.cs
- Sumber:
- Process.cs
Menginstruksikan Process komponen untuk menunggu tanpa batas waktu hingga proses terkait keluar.
public:
void WaitForExit();
public void WaitForExit ();
member this.WaitForExit : unit -> unit
Public Sub WaitForExit ()
Pengecualian
Pengaturan tunggu tidak dapat diakses.
Tidak ada proses Id yang ditetapkan, dan Handle dari mana Id properti dapat ditentukan tidak ada.
-atau-
Tidak ada proses yang terkait dengan objek ini Process .
-atau-
Anda mencoba memanggil WaitForExit() proses yang berjalan pada komputer jarak jauh. Metode ini hanya tersedia untuk proses yang berjalan pada komputer lokal.
Contoh
Lihat bagian Keterangan dari StandardError halaman referensi properti.
Keterangan
WaitForExit() membuat utas saat ini menunggu hingga proses terkait berakhir. Ini harus dipanggil setelah semua metode lain dipanggil pada proses. Untuk menghindari pemblokiran utas saat ini, gunakan Exited peristiwa .
Metode ini menginstruksikan Process komponen untuk menunggu waktu yang tidak terbatas agar proses dan penanganan aktivitas keluar. Hal ini dapat menyebabkan aplikasi berhenti merespons. Misalnya, jika Anda meminta CloseMainWindow proses yang memiliki antarmuka pengguna, permintaan ke sistem operasi untuk mengakhiri proses terkait mungkin tidak ditangani jika proses ditulis untuk tidak pernah memasukkan perulangan pesannya.
Catatan
Dalam .NET Framework 3.5 dan versi yang lebih lama, WaitForExit() kelebihan beban menunggu MaxValue milidetik (sekitar 24 hari), tidak tanpa batas waktu. Selain itu, versi sebelumnya tidak menunggu penanganan aktivitas keluar jika waktu penuh MaxValue tercapai.
Kelebihan beban ini memastikan bahwa semua pemrosesan telah selesai, termasuk penanganan peristiwa asinkron untuk output standar yang dialihkan. Anda harus menggunakan kelebihan beban ini setelah panggilan ke WaitForExit(Int32) kelebihan beban ketika output standar telah dialihkan ke penanganan aktivitas asinkron.
Ketika proses terkait keluar (yaitu, ketika dimatikan oleh sistem operasi melalui penghentian normal atau abnormal), sistem menyimpan informasi administratif tentang proses dan kembali ke komponen yang telah memanggil WaitForExit(). Komponen Process kemudian dapat mengakses informasi, yang mencakup ExitTime, dengan menggunakan Handle ke proses yang keluar.
Karena proses terkait telah keluar, Handle properti komponen tidak lagi menunjuk ke sumber daya proses yang ada. Sebaliknya, handel hanya dapat digunakan untuk mengakses informasi sistem operasi tentang sumber daya proses. Sistem menyadari handel untuk keluar dari proses yang belum dirilis oleh Process komponen, sehingga menyimpan ExitTime informasi dan Handle dalam memori sampai Process komponen secara khusus membebaskan sumber daya. Untuk alasan ini, setiap kali Anda memanggil StartProcess instans, panggil Close ketika proses terkait telah dihentikan dan Anda tidak lagi memerlukan informasi administratif tentang hal itu. Close membebaskan memori yang dialokasikan untuk proses keluar.
Lihat juga
Berlaku untuk
WaitForExit(Int32)
- Sumber:
- Process.cs
- Sumber:
- Process.cs
- Sumber:
- Process.cs
Menginstruksikan Process komponen untuk menunggu jumlah milidetik yang ditentukan agar proses terkait keluar.
public:
bool WaitForExit(int milliseconds);
public bool WaitForExit (int milliseconds);
member this.WaitForExit : int -> bool
Public Function WaitForExit (milliseconds As Integer) As Boolean
Parameter
- milliseconds
- Int32
Jumlah waktu, dalam milidetik, untuk menunggu proses terkait keluar. Nilai 0 menentukan pengembalian langsung, dan nilai -1 menentukan penantian tak terbatas.
Mengembalikan
true
jika proses terkait telah keluar; jika tidak, false
.
Pengecualian
Pengaturan tunggu tidak dapat diakses.
Tidak ada proses Id yang ditetapkan, dan Handle dari mana Id properti dapat ditentukan tidak ada.
-atau-
Tidak ada proses yang terkait dengan objek ini Process .
-atau-
Anda mencoba memanggil WaitForExit(Int32) proses yang berjalan pada komputer jarak jauh. Metode ini hanya tersedia untuk proses yang berjalan pada komputer lokal.
milliseconds
adalah angka negatif selain -1, yang menunjukkan waktu habis yang tak terbatas.
Contoh
Lihat contoh kode untuk ExitCode properti .
Keterangan
WaitForExit(Int32) membuat utas saat ini menunggu hingga proses terkait berakhir. Ini harus dipanggil setelah semua metode lain dipanggil pada proses. Untuk menghindari pemblokiran utas saat ini, gunakan Exited peristiwa .
Metode ini menginstruksikan Process komponen untuk menunggu waktu yang terbatas agar proses keluar. Jika proses terkait tidak keluar pada akhir interval karena permintaan untuk mengakhiri ditolak, false
dikembalikan ke prosedur panggilan. Anda dapat menentukan Timeout.Infinite untuk milliseconds
, dan Process.WaitForExit(Int32) akan berulah sama WaitForExit() dengan kelebihan beban. Jika Anda meneruskan 0 (nol) ke metode , itu hanya mengembalikan true
jika proses telah keluar; jika tidak, proses tersebut segera mengembalikan false
.
Catatan
Dalam .NET Framework 3.5 dan versi yang lebih lama, jika milliseconds
-1, WaitForExit(Int32) kelebihan beban menunggu MaxValue milidetik (sekitar 24 hari), tidak tanpa batas waktu.
Ketika output standar telah dialihkan ke penanganan aktivitas asinkron, ada kemungkinan pemrosesan output tidak akan selesai ketika metode ini kembali. Untuk memastikan bahwa penanganan peristiwa asinkron telah selesai, panggil WaitForExit() kelebihan beban yang tidak mengambil parameter setelah menerima true
dari kelebihan beban ini. Untuk membantu memastikan bahwa peristiwa ditangani Exited dengan benar di aplikasi Formulir Windows, atur SynchronizingObject properti .
Ketika proses terkait keluar (dimatikan oleh sistem operasi melalui penghentian normal atau abnormal), sistem menyimpan informasi administratif tentang proses dan kembali ke komponen yang telah memanggil WaitForExit(Int32). Komponen Process kemudian dapat mengakses informasi, yang mencakup ExitTime, dengan menggunakan Handle ke proses yang keluar.
Karena proses terkait telah keluar, Handle properti komponen tidak lagi menunjuk ke sumber daya proses yang ada. Sebaliknya, handel hanya dapat digunakan untuk mengakses informasi sistem operasi tentang sumber daya proses. Sistem menyadari handel untuk keluar dari proses yang belum dirilis oleh Process komponen, sehingga menyimpan ExitTime informasi dan Handle dalam memori sampai Process komponen secara khusus membebaskan sumber daya. Untuk alasan ini, setiap kali Anda memanggil StartProcess instans, panggil Close ketika proses terkait telah dihentikan dan Anda tidak lagi memerlukan informasi administratif tentang hal itu. Close membebaskan memori yang dialokasikan untuk proses keluar.
Lihat juga
Berlaku untuk
WaitForExit(TimeSpan)
- Sumber:
- Process.cs
- Sumber:
- Process.cs
- Sumber:
- Process.cs
Menginstruksikan komponen Proses untuk menunggu jumlah waktu yang ditentukan agar proses terkait keluar.
public:
bool WaitForExit(TimeSpan timeout);
public bool WaitForExit (TimeSpan timeout);
member this.WaitForExit : TimeSpan -> bool
Public Function WaitForExit (timeout As TimeSpan) As Boolean
Parameter
- timeout
- TimeSpan
Jumlah waktu untuk menunggu proses terkait keluar.
Mengembalikan
true
jika proses terkait telah keluar; jika tidak, false
.
Keterangan
Lihat WaitForExit(Int32) komentar.