Rumah >pembangunan bahagian belakang >C++ >Bagaimana dengan selamat menutup pekerja latar belakang semasa penutupan borang?

Bagaimana dengan selamat menutup pekerja latar belakang semasa penutupan borang?

Susan Sarandon
Susan Sarandonasal
2025-01-31 16:51:10134semak imbas

How to Safely Shutdown a BackgroundWorker During Form Closure?

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

Penyelesaian optimum melibatkan pemantauan acara

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

inilah pelaksanaan yang halus:

<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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn