6

私はC#で次のコードを持っています:

namespace Tests
{    
    [SetUpFixture, RequiresSTA]
    public class Setup
    {
        public IE Window = new IE("webpage");

        [SetUp]
        public void SetUp()
        {

        }

        [TearDown]
        public void TearDown()
        {

        } 
    }
}

Webサイトで実行しようとすると、次のエラーが返されます。

「InternetExplorerを開始するには、currentthreadのapartmentstateをApartmentState.staに設定する必要があります。」

通常、SetupFixture以外のものを使用する場合は、ソリューションとしてRequiresSTAを使用します。しかし、何らかの理由で現在は機能していません。

4

2 に答える 2

10

次の行を含めると、ソリューションは実際にはかなり単純になりました。

[assembly: RequiresSTA] 

ページの上部で、STAを使用するようにアセンブリ全体がセットアップされ、エラーがスローされなくなります。

于 2012-10-11T12:38:48.477 に答える
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...
});
于 2012-10-05T20:48:24.117 に答える