Вызывается 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
и разбивает окна.