Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk mengelakkan penamatan thread sebelum penyempurnaan dokumen kawalan webbrowser?

Bagaimana untuk mengelakkan penamatan thread sebelum penyempurnaan dokumen kawalan webbrowser?

Barbara Streisand
Barbara Streisandasal
2025-02-01 21:13:18305semak imbas

How to Prevent Thread Termination Before WebBrowser Control Document Completion?

Buat kawalan webbrowser dalam benang berasingan

Apabila cuba membuat kawalan webbrowser baru dari setiap URI di setiap URI, klik siri URL, anda mungkin menghadapi masalah, iaitu, benang berakhir sebelum dokumen itu dimuatkan sepenuhnya, jadi ia tidak akan mencetuskan dokumenComplete peristiwa.

Untuk menyelesaikan masalah ini, benang STA (unit tunggal) perlu dibuat untuk mengepam kitaran mesej. Ini menyediakan persekitaran yang sesuai untuk komponen ActiveX seperti kawalan webbrowser. Kod contoh berikut menunjukkan bagaimana untuk mencapai ini:

Dalam kod ini, buat thread STA baru dan berikannya kepada pembolehubah th. Kaedah setApartmentState () digunakan untuk menentukan bahawa benang ini akan menjadi benang STA. Selanjutnya, mulakan benang dan hubungi kaedah Navigasi () pada contoh BR (WebBrowser) untuk menavigasi ke URL yang diperlukan. Akhirnya, daftar program pemprosesan acara dokumen dan gunakan aplikasi.run () untuk memulakan gelung mesej STA Thread.
<code class="language-csharp">private void runBrowserThread(Uri url) {
    var th = new Thread(() => {
        var br = new WebBrowser();
        br.DocumentCompleted += browser_DocumentCompleted;
        br.Navigate(url);
        Application.Run();
    });
    th.SetApartmentState(ApartmentState.STA);
    th.Start();
}

void browser_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e) {
    var br = sender as WebBrowser;
    if (br.Url == e.Url) {
        Console.WriteLine("已导航到 {0}", e.Url);
        Application.ExitThread();   // 停止线程
    }
}</code>

Apabila dokumen dimuatkan, program pemprosesan acara Browser_DocumentCompleted akan dilakukan. Ia menyemak sama ada URL yang dimuatkan sepadan dengan URL sasaran.

Atas ialah kandungan terperinci Bagaimana untuk mengelakkan penamatan thread sebelum penyempurnaan dokumen kawalan webbrowser?. 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