Watinのソースコードには、次のコードがあります。
public void NavigateToNoWait(Uri url)
{
var thread = new Thread(GoToNoWaitInternal);
thread.SetApartmentState(ApartmentState.STA);
thread.Start(url);
thread.Join(500);
}
[STAThread]
private void GoToNoWaitInternal(object uriIn)
{
var uri = (Uri)uriIn;
NavigateTo(uri);
}
作成されたスレッドにはアパートメントの状態が設定されているのに、なぜ[STAThread]
属性がメソッドに追加されるのですか?特定のコードには興味がありませんが、STAThread
属性が必要かどうか疑問に思っています。
ノート:
- このメソッド
GoToNoWaitInternal
は他の場所では使用されていません。 - 全体のwatinプロジェクトは、WebBrowserオブジェクト(一般的にはInternet Explorerウィンドウ)の操作に関するものです。したがって、COMオブジェクトを操作しています。