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

Bagaimana dengan selamat menghentikan pekerja latar belakang semasa menutup borang tingkap?

Barbara Streisand
Lepaskan: 2025-01-31 17:06:12
asal
717 orang telah melayarinya

How to Safely Stop a BackgroundWorker When Closing a Windows Form?

benang kerja latar apabila tetingkap tingkap ditutup dengan elegan

Apabila menggunakan Latar Belakang di tetingkap Windows, masalah biasa adalah untuk menghentikan benang kerja apabila tetingkap ditutup. Walau bagaimanapun, hanya memanggil

dalam proses pemprosesan acara penutupan tetingkap boleh menyebabkan kunci yang tidak normal atau buntu. bgWorker.CancelAsync()

Soalan 1: ObjectDisposexception dalam panggilan panggilan

Jika

secara langsung dipanggil dalam program pemprosesan acara penutup tetingkap, panggilan Invoke berikutnya boleh membuang

keabnormalan. Ini kerana tingkap sedang dibebaskan, dan benang utama telah keluar. bgWorker.CancelAsync() ObjectDisposedException Soalan 2: Kebuntuan ketika Bgworker selesai

Menunggu dalam proses menutup proses pemprosesan acara

yang melengkapkan boleh menyebabkan kunci mati, kerana panggilan memanggil masih sedang berjalan untuk mengelakkan benang kerja selesai.

bgWorker Penyelesaian: Menyelaras penutupan tetingkap dan kerja latar belakang untuk melengkapkan

Untuk menyelesaikan masalah ini, kaedah yang lebih stabil diperlukan:

Dalam tetingkap menutup program pemprosesan acara, jika
    masih berjalan, tetapkan
  1. . bgWorker e.Cancel = true Tetapkan logo
  2. untuk menunjukkan permintaan pengguna untuk ditutup.
  3. closePending Dalam program pemprosesan acara , semak logo
  4. . Jika anda telah ditetapkan, hubungi
  5. di tetingkap. bgWorker RunWorkerCompleted closePending Close() Kaedah ini boleh menghalang keabnormalan dan kunci mati melalui penyelesaian tingkap untuk menutup acara dan penyempurnaan
  6. .

Atas ialah kandungan terperinci Bagaimana dengan selamat menghentikan pekerja latar belakang semasa menutup borang tingkap?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan