Вызывается System.Runtime.InteropService.COMException и Internet Explorer закрывается

Я использую SHDocVw.InternetExplorerдля открытия и управления окном браузера для автоматизации на внутреннем веб-сайте. Программное обеспечение обычно работает должным образом, но иногда браузер закрывается. Я отследил строки кода, которые вызывают это, но я не могу придумать способ решить эту проблему.

Мой исходный код выглядел так:

private InternetExplorer window;

public HTMLDocument Document 
{ 
    get 
    {
        try
        {
            return (HTMLDocument)window.Document;
        }
        catch (System.Runtime.InteropServices.COMException)
        {
            return null;
        }
    } 
}

Однако всякий раз, когда window.Document звонок привел к COMExceptionбраузер закроется. Я попытался создать логическое значение isReady, которому было присвоено значение false, когда я пытался уйти с текущей страницы, и было установлено значение true, когдаNavigateComplete2 было запущено событие, но оно не срабатывает, если браузер спрашивает "вы уверены, что хотите покинуть эту страницу", что означало, что я не мог взаимодействовать с этими всплывающими окнами.

Поэтому я попытался изменить код на:

private InternetExplorer window;

public HTMLDocument Document 
{ 
    get 
    {
        try
        {
            if (window.Busy) return null;
            return (HTMLDocument)window.Document;
        }
        catch (System.Runtime.InteropServices.COMException)
        {
            return null;
        }
    } 
}

Хотя у меня было меньше сбоев, он все равно иногда закрывает браузер, когда COMException происходит на window.Busy вызов.

поскольку NavigateComplete2 не срабатывает, когда навигация прерывается браузером и InternetExplorer.Busy может также привести к закрытию браузера. У меня нет идей, как решить.

Изменить: теперь я также пробовал: window.ReadyState == tagREADYSTATE.READYSTATE_COMPLETE но бросает то же самое COMException на window.ReadyState и разбивает окна.

0 ответов

Другие вопросы по тегам