Bagikan melalui


Process.WaitForExit Metode

Definisi

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.

Berlaku untuk