Heim > Backend-Entwicklung > C++ > Wie verhindern Sie die Beendigung der Thread vor dem Abschluss des Webbrowser -Steuerungsdokuments?

Wie verhindern Sie die Beendigung der Thread vor dem Abschluss des Webbrowser -Steuerungsdokuments?

Barbara Streisand
Freigeben: 2025-02-01 21:13:18
Original
325 Leute haben es durchsucht

How to Prevent Thread Termination Before WebBrowser Control Document Completion?

Erstellen Sie das Webbrowser -Steuerelement in einem separaten Thread

Wenn Sie versuchen, in jedem URI eine neue Webbrowser -Steuerung von jedem URI zu erstellen, klicken Sie auf eine Reihe von URLs, und können Sie auf ein Problem stoßen, dh der Thread endet, bevor das Dokument vollständig geladen ist, sodass es niemals Trigger -Dokumentcomplete auslösen wird Ereignis.

Um dieses Problem zu lösen, muss ein STA -Thread (Single -Thread -Einheit) erstellt werden, um den Nachrichtenzyklus zu pumpen. Dies bietet eine geeignete Umgebung für ActiveX -Komponenten wie Webbrowser -Steuerung. Der folgende Beispielcode zeigt, wie dies erreicht werden kann:

Erstellen Sie in diesem Code einen neuen STA -Thread und weisen Sie ihn der Variablen -tH zu. SetArtmentState () -Methode wird verwendet, um anzugeben, dass dieser Thread STA -Thread ist. Starten Sie anschließend den Thread und rufen Sie die Navigate () -Methode auf der BR (WebBrowser) -Instanz auf, um zur erforderlichen URL zu navigieren. Registrieren Sie schließlich das Dokument -Completed -Ereignisverarbeitungsprogramm und verwenden Sie Anwendung.Run (), um die Nachrichtenschleife des STA -Threads zu starten.
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();   // 停止线程
    }
}
Nach dem Login kopieren

Wenn das Dokument geladen wird, wird das Programm "Browser_Document Completed Event Processing" durchgeführt. Es prüft, ob die geladene URL mit der Ziel -URL übereinstimmt.

Das obige ist der detaillierte Inhalt vonWie verhindern Sie die Beendigung der Thread vor dem Abschluss des Webbrowser -Steuerungsdokuments?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage