2011-10-22 14 views
0

私のフォームでWebブラウザを使用するのに問題があります。実行時にこのエラーが発生する現在のスレッドがシングルスレッドアパートメントにないため、ActiveXコントロール '8856f961-340a-11d0-a96b-00c04fd705a2'をインスタンス化できません。C#WebBrowserエラースレッド

フォームdesigner.csファイルにこのテキストが表示されますthis.webBrowser2 = new System.Windows.Forms.WebBrowser();私は実際にブラウザを動作させるために何をすべきか分からない。

私は両方のMTAThreadとSTAThreadをProgram.csファイルで試してみましたが、動作しないようです。

おかげ

+0

を使用してSTAThreadにスレッドのアパートメント状態を設定します(新しいWebブラウザーを呼び出している方法でそれを試してみました)コントロール? –

答えて

2

COMコントロールは、そのアパートの状態を必要とするので、あなたは、STAThreadとしてあなたのスレッドをマークする必要があります。

これを行うには2つの簡単な方法があります。

  • マークが[STAThread]属性を使用して、スレッドのエントリポイント(自分のスレッドで始まる機能)。エントリポイントに設定しないで他のメソッドで呼び出しスタックを設定した場合、この属性は適用されません。
  • あなたはSystem.Threading.Threadクラスを使用してスレッドを起動している場合は、Thread.SetApartmentState()
+0

これは既にSTAThreadですが、まだ動作していないようです – user1008096

+0

本当ですか? 'Thread.CurrentThread.GetApartmentState()'は何を返しますか? – foxy

+0

どこに置くのですか – user1008096

関連する問題