Maison > développement back-end > C++ > Comment éviter la terminaison du thread avant la fin du document de contrôle WebBrowser?

Comment éviter la terminaison du thread avant la fin du document de contrôle WebBrowser?

Barbara Streisand
Libérer: 2025-02-01 21:13:18
original
250 Les gens l'ont consulté

How to Prevent Thread Termination Before WebBrowser Control Document Completion?

Créez le contrôle WebBrowser dans un thread séparé

Lorsque vous essayez de créer un nouveau contrôle WebBrowser à partir de chaque URI dans chaque URI, cliquez sur une série d'URL, vous pouvez rencontrer un problème, c'est-à-dire que le thread se termine avant que le document ne soit entièrement chargé, de sorte qu'il ne déclenchera jamais les déclencheurs de documentcomplete événement.

Afin de résoudre ce problème, un thread STA (unité unique) doit être créé pour pomper le cycle des messages. Cela fournit un environnement approprié pour les composants ActiveX tels que WebBrowser Control. L'exemple de code suivant montre comment y parvenir:

Dans ce code, créez un nouveau thread STA et affectez-le à la variable Th. La méthode setApartmentState () est utilisée pour spécifier que ce thread sera le thread STA. Par la suite, démarrez le thread et appelez la méthode Navigate () sur l'instance BR (WebBrowser) pour accéder à l'URL requise. Enfin, enregistrez le programme de traitement d'événements documentcompleted et utilisez Application.Run () pour démarrer la boucle de message du thread STA.
<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>
Copier après la connexion

Lorsque le document est chargé, le programme de traitement d'événements Browser_DocumentCompleted sera effectué. Il vérifie si l'URL chargée correspond à l'URL cible.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal