Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Saya Boleh Memastikan Proses Kanak-kanak Dibunuh Apabila Proses Induk Tamat dalam C#?
atau Application.Quit()
tidak selalu boleh dipercayai, penyelesaian yang mantap melibatkan memanfaatkan objek kerja Windows. Process.Kill()
Pendekatan ini memerlukan kelas
adat untuk mengendalikan penciptaan dan pengurusan objek pekerjaan. Contoh yang dipermudahkan mungkin kelihatan seperti ini: Job
<code class="language-csharp">public class Job : IDisposable { private IntPtr m_handle; private bool m_disposed = false; // ... constructor and other methods ... }</code>Pembina akan memulakan objek pekerjaan dan menetapkan bendera
dalam struktur JOB_OBJECT_LIMIT_KILL_ON_JOB_CLOSE
. Bendera ini memastikan bahawa semua proses yang berkaitan dengan objek kerja ditamatkan apabila pemegang terakhir ke objek pekerjaan ditutup. JOBOBJECT_BASIC_LIMIT_INFORMATION
<code class="language-csharp">JOBOBJECT_BASIC_LIMIT_INFORMATION info = new JOBOBJECT_BASIC_LIMIT_INFORMATION(); info.LimitFlags = 0x2000; // JOB_OBJECT_LIMIT_KILL_ON_JOB_CLOSE</code>kaedah
kemudian akan mengaitkan proses kanak -kanak dengan objek pekerjaan: AddProcess
<code class="language-csharp">public bool AddProcess(IntPtr handle) { return AssignProcessToJobObject(m_handle, handle); }</code>Akhirnya, untuk memastikan pembersihan yang betul, pemegang proses kanak -kanak akan ditambah kepada contoh
. Apabila penamatan proses induk, sistem operasi secara automatik menamatkan proses kanak -kanak yang berkaitan. Job
Ringkasnya, menggunakan objek pekerjaan menyediakan mekanisme yang boleh dipercayai untuk memastikan proses kanak -kanak ditamatkan apabila proses induk berakhir, menghalang proses yatim piatu dan meningkatkan kestabilan aplikasi. Kaedah ini lebih tinggi daripada alternatif yang kurang dipercayai seperti
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Memastikan Proses Kanak-kanak Dibunuh Apabila Proses Induk Tamat dalam C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!