Laden...

EventHandler eines Controls in einem extra Thread löst nicht aus

Erstellt von digi333 vor 11 Jahren Letzter Beitrag vor 11 Jahren 603 Views
Thema geschlossen
D
digi333 Themenstarter:in
290 Beiträge seit 2006
vor 11 Jahren
EventHandler eines Controls in einem extra Thread löst nicht aus

        private void browser_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
        {
            br = sender as WebBrowser;
            docText = br.Document.Body.InnerText;
               
        }

        private void thread(object uri)
        {
            Uri url = uri as Uri;
            WebBrowser web = new WebBrowser();
            web.DocumentCompleted += new   WebBrowserDocumentCompletedEventHandler(browser_DocumentCompleted);
            web.Navigate(url);
...}

Im oberen Code wird ein Thread gestartet der den Inhalt eines Webbrowser übergeben soll. Leider kommt er nie in die browser_DocumentCompleted Funktion.

Das Hauptprogramm öffnet wie folgt...


Uri uri = new Uri(url);

            ParameterizedThreadStart ts = thread;
            Thread th = new Thread(ts);
            th.SetApartmentState(ApartmentState.STA);
            th.Start(uri);
            while (th.IsAlive)
            {
                Thread.Sleep(100);
            }
2.891 Beiträge seit 2004
vor 11 Jahren

Was genau soll das werden, wenn es fertig ist?
Denn das WebBrowserControl braucht eine aktive Nachrichtenschleife - und so wie der Code aussieht, den du gepostet hast ("Hauptprogramm") - ist die nicht vorhanden.

49.485 Beiträge seit 2005
vor 11 Jahren

Hallo digi333,

das ist leider schon der zweite überflüssige Thread in Folge. Es gehört zu den absoluten Grundlagen, dass man Controls nicht in separaten Threads erstellen darf, siehe auch [FAQ] Warum blockiert mein GUI?

Bitte beachte [Hinweis] Wie poste ich richtig? Punkt 1.1.1 und 1.1 und schau dir im eigenen Interesse am besten nochmal die Grundlagen der Windows Forms Programmierung an.

herbivore

Thema geschlossen