c# – WatiN:CurrentThread需要将它的ApartmentState设置为ApartmentState.STA,以便能够自动化Internet Explorer

我从C#windows服务调用WatiN。当我调用WatiN它抛出以下异常。 CurrentThread需要将它的ApartmentState设置为ApartmentState.STA才能自动化Internet Explorer

我试过启动一个线程和设置公寓状态通过

mythread.SetApartmentState(ApartmentState.STA)

但是导致另一个错误

无法评估表达式,因为代码已优化或本机框架在调用堆栈顶部。

我也尝试添加一个属性到服务入口点。

static class Program
{
      [STAThread]
      static void Main()
      {
          ...

有任何想法吗?

我知道本杰明已经发布了一个“工作”的答案,但我想我会添加一些我遇到的时候,当我遇到这个错误时,试图执行WatiN测试:
对于NUnit,您应该将这样的东西添加到您的app.config中进行测试:

  <configSections>
    <sectionGroup name="NUnit">
      <section name="TestRunner" type="System.Configuration.NameValueSectionHandler"/>
    </sectionGroup>
  </configSections>
  <NUnit>
    <TestRunner>
      <!-- WatiN can only host IE in STA mode -->
      <add key="ApartmentState" value="STA"/>
    </TestRunner>
  </NUnit>

在MbUnit中,按如下所示修改TestFixture属性:

[TestFixture(ApartmentState = ApartmentState.STA)] 

HTH,
皮特。

哈 – 它实际上在文档中。 Doh!
http://watin.org/documentation/sta-apartmentstate/

http://stackoverflow.com/questions/1952338/watin-the-currentthread-needs-to-have-its-apartmentstate-set-to-apartmentstate

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:c# – WatiN:CurrentThread需要将它的ApartmentState设置为ApartmentState.STA,以便能够自动化Internet Explorer