Rumah > pembangunan bahagian belakang > C++ > Bagaimana untuk Mengemas kini GUI dengan Selamat dari Benang Latar Belakang dalam C#?

Bagaimana untuk Mengemas kini GUI dengan Selamat dari Benang Latar Belakang dalam C#?

Mary-Kate Olsen
Lepaskan: 2025-01-10 09:32:41
asal
928 orang telah melayarinya

How to Safely Update a GUI from a Background Thread in C#?

Panduan Kemas Kini Keselamatan Benang GUI C#

Penerangan Masalah

Mengemas kini GUI daripada urutan latar belakang adalah masalah rumit. Percubaan untuk berbuat demikian secara langsung boleh mengakibatkan tingkah laku yang luar biasa atau tidak dijangka.

Penyelesaian BackgroundWorker

1 Segerakan BackgroundWorker dan konfigurasikan pengendali acaranya.

<code class="language-csharp">private BackgroundWorker _backgroundWorker;

_backgroundWorker = new BackgroundWorker();
_backgroundWorker.DoWork += backgroundWorker_DoWork;
_backgroundWorker.ProgressChanged += backgroundWorker_ProgressChanged;
_backgroundWorker.WorkerReportsProgress = true;</code>
Salin selepas log masuk

2. Tugas latar belakang: Dalam pengendali acara DoWork, laksanakan tugasan yang berjalan lama dan laporkan kemajuan secara berkala.

<code class="language-csharp">public void backgroundWorker_DoWork(object sender, DoWorkEventArgs e)
{
    // ... 执行你的任务
    object param = "一些数据";
    _backgroundWorker.ReportProgress(0, param);
}</code>
Salin selepas log masuk

3. Laporan kemajuan: Dalam pengendali acara ProgressChanged, kemas kini GUI dengan kemajuan yang dilaporkan.

<code class="language-csharp">private void backgroundWorker_ProgressChanged(object sender, ProgressChangedEventArgs e)
{
    // 使用e.ProgressPercentage和e.UserState更新UI
}</code>
Salin selepas log masuk
Tugas berjalan

4. Mulakan tugas latar belakang: Panggil RunWorkerAsync untuk memulakan tugas latar belakang.

<code class="language-csharp">_backgroundWorker.RunWorkerAsync();</code>
Salin selepas log masuk

5. Penjadualan berterusan (pilihan): Jika anda perlu mengulangi tugas dengan kerap, anda boleh menambah kod berikut dalam pengendali acara RunWorkerCompleted.

Atas ialah kandungan terperinci Bagaimana untuk Mengemas kini GUI dengan Selamat dari Benang Latar Belakang dalam C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
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