Веб-браузер не запускает loadComplete, но выполняет навигацию по запуску

#c# #wpf #user-controls #webbrowser-control

#c# #wpf #пользовательские элементы управления #веб-браузер-управление

Вопрос:

У меня есть UserControl(wpf)

     public WebBrowserControl()
    {
       InitializeComponent();
        _Browser = new WebBrowser();
        _pipeClient = new NamedPipeClient<WebMessage>("TestPipe");
        _pipeClient.ServerMessage  = PipeClientOnServerMessage;
        _pipeClient.Error  = PipeClientOnError;
        _pipeClient.Start();
        InternetExplorerBrowserEmulation.SetBrowserEmulationMode();
        SuppressScriptErrors(_Browser, false);
        SetWebBrowserFeatures();
        GridBrrw.Children.Add(_Browser);
       _Browser.ObjectForScripting = new ObjectForScripting(_pipeClient);
        _Browser.LoadCompleted  = new LoadCompletedEventHandler(_Browser_OnLoadCompleted);
        _Browser.Navigating  = _Browser_OnNavigating;

        var th = new Thread(ExecuteInForeground);
        th.Start();

    }

    private void ExecuteInForeground()
    {
        int i = 0;
        while (i<=9)
        {
            Thread.Sleep(1000);
            _pipeClient.PushMessage(new WebMessage() {Actions = "allo"});
            i  ;
        }
    }
    private void _Browser_OnNavigating(object sender, NavigatingCancelEventArgs e)
    {
        if (IsClick)
        {
            var mes = new WebMessage { Actions = "OpenUrl" };
            mes.Url = e.Uri.AbsoluteUri;
            _pipeClient.PushMessage(mes);
            e.Cancel = false;
        }
        return;
        e.Cancel = false;

    }
     private void _Browser_OnLoadCompleted(object sender, NavigationEventArgs e)
    {
        try
        {

            var br = sender as WebBrowser;
            if (br?.Source != null amp;amp; br.Source.AbsoluteUri != e.Uri.AbsoluteUri)
            {
                MessageBox.Show($"Source = {br.Source.AbsoluteUri},rn AbsoluteUri = {e.Uri.AbsoluteUri}");
                return;
            }
            Document = (HTMLDocument)br.Document;
            if (!string.IsNullOrEmpty(FindElement))
            {
               var node =  HtmlNode.CreateNode(FindElement);
                while (GetElement(node) == null)
                {
                    System.Windows.Forms.Application.DoEvents();
                }
            }
            if (WaitAjax)
            {
                ConnectToAjax();
                return;
            }
            if (Sleep > 0)
            {
                var time = TimeSpan.FromSeconds(Sleep);
                Thread.Sleep(time);
            } 
            var mes = new WebMessage { Actions = "Load" };
            mes.Title = Document.title;

            mes.Url = br.Source.AbsoluteUri;
            mes.Domain = br.Source.Host.Replace("http", "").Replace("http://", "").Replace("https://", "").Replace("https", "");
            mes.Fovicon = $"http://www.google.com/s2/favicons?domain={mes.Domain}";
            if (Document != null)
            {
                var htmls = Document.getElementsByTagName("html");
                if (htmls != null amp;amp; htmls.length > 0)
                {
                    var html = htmls.item(0) as IHTMLElement;
                    mes.Html = html.outerHTML;
                }
            }

            _pipeClient.PushMessage(mes);
        }
        catch (Exception ex)
        {

            throw ex;
        }


    }
  

При запуске навигации по событию ExecuteInForeground отправляет сообщения, но событие LoadCompleted не запускается. Может ли это быть связано с окном настроек — Property = «ResizeMode» Value = «NoResize». Что я делаю не так?

Комментарии:

1. Что выполняет навигацию браузера?

2. Страница загружается. Я вижу ее. общедоступная пустая навигация (URL-адрес строки) { if (_Browser == null) возвращает; если (строка. IsNullOrEmpty(url)) возвращает; _Browser. Перейдите (url); }