2016-11-25 22 views
1

私は現在、ユーザーコントロールの一部であるWebブラウザーコントロールを含むOutlookアドインを持っており、このアドインのWebページを読み込んでいます。したがって、これまでのところうまく動作しますが、ページの読み込みに時間がかかると、ユーザーが作業を続行できなくなります。 私の質問は実際には、ユーザーコントロールからそのWebブラウザコントロールを移動し、このWebブラウザコントロールを持つ別のスレッドを作成し、そのスレッドですべてのWebブラウザを読み込みます。このようにして、コントロールがロードする時間がかかる間、ユーザーは作業を続けることができます。私はこの記事では、このアプローチについて読んでてきたWebブラウザコントロール別スレッド - VB.Net

WebBrowser Control in a new thread

しかし、私は私の特定のユースケースのためにこれを再利用するために苦労しています。誰かが私にこのアプローチを手伝ってもらえますか?

Web browser control loading Outlook unusable VB.Net

+2

オリジナルの質問には「あなたに役立つ質問には詳細が不足しています」という良いコメントがあります。質問を繰り返し、詳細を表示することは、このWebサイトを使用するための賢明な方法ではありません。 –

+1

あなたは私に紛失している情報をお知らせください。私は詳細を追加するよりも幸せです:)。私は実際に他の投稿に自分のコードのほとんどを追加しました。コードの点でさらに何を追加するかわからない。 – Neophile

答えて

0

私はそれがあまりないですけど、あなたはそのような何かを試すことができます: は、私もここに私のコードを掲載している

Private ThreadBrowse As Threading.Thread 

がスレッドを宣言します次に起動します:

Private Sub StartNavigate 
    ThreadBrowse = New System.Threading.Thread(AddressOf TheWork) 
    ThreadBrowse.SetApartmentState(Threading.ApartmentState.STA) 
    ThreadBrowse.Start() 
End Sub 

スレッドが行うということですサブ:

Private Sub TheWork() 
    Dim IsFinish As Boolean = False 
    WebBrowser1.Navigate(New Uri("http://stackoverflow.com")) 

Recheck: 
    WebBrowser1.InvokeCustom(Sub() IsFinish = (WebBrowser1.ReadyState = WebBrowserReadyState.Complete)) 
    If IsFinish = False Then 
     Threading.Thread.Sleep(100) 
     GoTo Recheck 
    End If 
End Sub 

はモジュールで彼を置くことを忘れないでください:

<Runtime.CompilerServices.Extension()> 
Public Sub InvokeCustom(ByVal Control As Control, ByVal Action As Action) 
    If Control.InvokeRequired Then Control.Invoke(New MethodInvoker(Sub() Action()), Nothing) Else Action.Invoke() 
End Sub 

たぶん、あなたは「スタートアップ」のような思いやり、この基本的なコード、とのより良い行うことができます:D

+0

これを行うには、既存のWebブラウザコントロールを使用できますか?私は何か似たような試みをしましたが、私の既存のWebブラウザコントロール(それはユーザーコントロールの下にあります)を実際には使用しません。私は、スレッドでWebブラウザのインス​​タンスを作成し、常にスレッドでWebブラウザのコントロールを実行する必要があると思います。それは働くだろうか? – Neophile

+0

はい、どんなコントロールでも使用できます。「WebBrowser1」をWebブラウザまたはコントロールで置き換えてください。 スレッドでWebブラウザを直接作成するには... mmhは、少し複雑で不可能ではなく複雑であると言わなければなりません。私もこの問題で走っていましたが、他のコントロールは大丈夫でしたが、ウェブブラウザの場合は... "奇妙"です:D とにかくこのコードをテストして教えてください。 – Tyler

0

Webブラウザコードを別のクラスに配置してコードを呼び出そうとしましたか?

+0

いいえ、あなたの答えをサポートするためにいくつかのコードを追加して、それを試すことができますか? – Neophile

関連する問題