2016-10-17 4 views
-1

У меня есть элемент управления веб-браузера, который добавляется в пользовательский элемент управления и автоматически делается для перехода к определенному URL-адресу, когда выбрано электронное письмо (скажем https://www.google.com). Во время навигации происходит щелчок по электронной почте, что замедляет фактическую производительность Outlook, и перспективы ожидают загрузки страницы. Есть ли способ осуществить эту навигацию в фоновом режиме, не влияя на производительность Outlook при нажатии на различные электронные письма?Управление веб-браузером Загрузка Outlook непригодным для использования VB.Net

Спасибо.

Update:

AddIn Startup Код:

Private Sub ThisAddIn_Startup() Handles Me.Startup 

     myUserControl1 = New OutlookTaskPane 
     myUserControl1.TabStop = True 
     Dim width As Integer = myUserControl1.Width 
     myCustomTaskPane = Me.CustomTaskPanes.Add(myUserControl1, "Title") 
     myCustomTaskPane.Width = width 
     myCustomTaskPane.Visible = True 
     myCustomTaskPane.DockPositionRestrict = Microsoft.Office.Core.MsoCTPDockPositionRestrict.msoCTPDockPositionRestrictNoChange 

     currentExplorer = Me.Application.Explorers.Application.ActiveExplorer 
     AddHandler currentExplorer.SelectionChange, AddressOf myOutlookExplorer_SelectionChange 
    End Sub 

SelectionChange Код (Об изменении выбора электронной почты):

Private Sub myOutlookExplorer_SelectionChange() Handles currentExplorer.SelectionChange 
     Dim RandNum As Integer = myUserControl1.GetRandomNumber(1, 100) 
     ' Grid Loading Link 
     myUserControl1.WebBrowser1.Navigate("https://www.google.com" & "?" & RandNum, Nothing, Nothing, "User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; rv:11.0) like Gecko") 
    End Sub 

Документ Завершена Код:

Private Sub WebBrowser1_DocumentCompleted(sender As Object, e As WebBrowserDocumentCompletedEventArgs) Handles WebBrowser1.DocumentCompleted 
     ' If the document is not completely ready, then don't perform the events below 
     If Not WebBrowser1.ReadyState = WebBrowserReadyState.Complete Then 
      Return 
     End If 
.... // lots of field setting/DOM manipulation after the DOM is loaded 
End Sub 
+0

Я думаю, что управление веб-браузером выполняет свои задачи по загрузке без замедления пользовательского интерфейса. Вы проверяли использование ресурсов через диспетчер задач? – theBugger

+0

Ну, я думаю, они должны, однако, в моем случае происходит большая загрузка, и для загрузки содержимого веб-браузера требуется много времени. Веб-страница изменяется на основе текущего адреса электронной почты, поскольку я передаю ее через элемент управления веб-браузера. – Neophile

+0

Это нормально, если ваша страница тяжелая, браузер может повесить (это происходит даже с вашим реальным браузером). Если браузер находится в том же процессе, что и Outlook, он сделает все медленнее. – theBugger

ответ

1

Я полагаю, вы используете System.Windows.Forms.WebBrowser.

Метод Stop(), который вы можете попытаться позвонить, прежде чем запрашивать новый Navigate(String).

+0

Как это поможет? Остановит ли он существующую навигацию/остановит контроль веб-браузера от загрузки того, что он загружал раньше? Кроме того, поскольку страница большая и DOM требует времени для загрузки, как только я нажал на электронное письмо, для отображения веб-страницы требуется много времени, и из-за этого затрудняется нажимать на другое письмо, пока эта страница не будет загружен. – Neophile

+0

@JackBrown В документации указано «Отменяет любую ожидающую навигацию». Но я не знаю, помогает ли это в вашем конкретном сценарии или нет. – habakuk

+0

Есть ли способ запустить этот элемент управления веб-браузером в отдельном потоке, чтобы он не мешал интерфейсу? – Neophile

Смежные вопросы