Rumah >pembangunan bahagian belakang >C++ >Bagaimana dengan selamat menutup pekerja latar belakang semasa penutupan borang?
dengan betul mengendalikan penutupan kerja latar belakang pada penutupan borang
Menggunakan untuk mengemas kini UI borang memerlukan pengendalian yang berhati -hati terhadap penutupan borang untuk mencegah pengecualian seperti BackgroundWorker
atau kebuntuan. Pembatalan pramatang ObjectDisposedException
semasa penutupan bentuk boleh menyebabkan masalah keselamatan benang, sambil menunggu siapnya boleh menyebabkan kebuntuan. BackgroundWorker
dan memeriksa status FormClosing
. Jika pekerja aktif, batalkan penutupan, isyarat niat untuk menutup, dan membatalkan BackgroundWorker
. Pengendali acara BackgroundWorker
's BackgroundWorker
kemudian memeriksa isyarat penutupan dan menutup borang. RunWorkerCompleted
<code class="language-csharp">private bool closingRequested; protected override void OnFormClosing(FormClosingEventArgs e) { if (backgroundWorker1.IsBusy) { closingRequested = true; backgroundWorker1.CancelAsync(); e.Cancel = true; this.Enabled = false; // or this.Hide() for a smoother visual experience return; } base.OnFormClosing(e); } private void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) { if (closingRequested) { this.Close(); } closingRequested = false; // ... other cleanup tasks ... }</code>Kaedah ini dengan bersih membatalkan
, mendaftarkan permintaan penutupan pengguna, dan menutup borang apabila pekerja selesai. Ini memastikan penutupan yang mantap dan boleh dipercayai, menghalang kedua -dua pengecualian dan kebuntuan. BackgroundWorker
Atas ialah kandungan terperinci Bagaimana dengan selamat menutup pekerja latar belakang semasa penutupan borang?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!