2012-11-28 7 views
8

、コードのこの作品はありますか?特定のコードには興味がありませんが、STAThread属性が必要なのかどうか疑問です。SetApartmentStateとWatinの<a href="http://sourceforge.net/projects/watin/" rel="nofollow noreferrer">source code</a>で[STAThread]

  • 他の場所で使用されていないGoToNoWaitInternal方法。
  • watinプロジェクト全体では、Webブラウザーオブジェクト(一般的にはInternet Explorerウィンドウ)の操作についてです。したがって、私たちはCOMオブジェクトを操作しています。

答えて

6

だけSTAThreadAttribute(強調鉱山)のドキュメントを読んで:

エントリポイントメソッド(C#およびVisual BasicのMain()方法)にこの属性を適用します。 他の方法には影響しません。コードで開始するスレッドのアパートメント状態を設定するには、スレッドを開始する前にThread.SetApartmentStateメソッドを使用します。

この場合、属性は無効です。

+0

理由があるはずです。[Jeroen van Menen](http://stackoverflow.com/users/52173/jeroen-van-menen)それを追加しました – Odys

+0

@odyodyodysあなたは彼にそれについて尋ねる必要があります。 – svick

+0

'STAThreadAttribute'は[applicationActivator.CreateInstance](https://msdn.microsoft.com/en-us/library/ms146108%28v=vs.110%29)でのみ使用されているため、' main() 'にのみ影響することに注意してください。 aspx)では、この属性が[参照元](https://referencesource.microsoft.com/#mscorlib/system/applicationactivator.cs,104)( 'Internal'メソッドの' ApplicationActivator ')でどのように使用されているかを見ることができます。 ExecuteAsAssembly() ') – jrh

3

STA(シングルスレッドアパートメント)は、pre-.NET Visual Basicで使用されるスレッドモデルです。これは、COMに公開されるコンポーネントのMainメソッドでのみ使用する必要があります。あなたが理解しようとしているコードの作成者は、どのように使用されるべきかを明らかに理解していませんでした。

関連する問題