在 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 对象。