我在C#中有以下代码:
namespace Tests
{
[SetUpFixture, RequiresSTA]
public class Setup
{
public IE Window = new IE("webpage");
[SetUp]
public void SetUp()
{
}
[TearDown]
public void TearDown()
{
}
}
}
当我尝试使用我的网站运行它时,它会返回错误:
“当前线程需要将其公寓状态设置为 ApartmentState.sta能够启动Internet Explorer“
通常在使用除SetupFixture之外的任何东西时,需要将其作为解决方案。但由于某种原因,它现在不起作用。
答案 0 :(得分:10)
如果包含以下行,该解决方案实际上变得相当简单:
[assembly: RequiresSTA]
在页面顶部,它将设置整个程序集以使用STA,它不再抛出错误。
答案 1 :(得分:5)
您可以尝试启动新线程并设置其ApartmentState:
var t = new Thread(new ThreadStart(ToDo));
t.SetApartmentState(ApartmentState.STA);
t.Start();
// Run synchronously by waiting for t to finish.
t.Join();
代表:
private void ToDo()
{
// Do something...
}
或内联版本:
var t = new Thread(() =>
{
// Do something...
});