質問

私は単にこれを試します:

    public class FooJob : IJob
{
    public FooJob() { }

    public void Execute(JobExecutionContext context)
    {
        Thread.CurrentThread.SetApartmentState(ApartmentState.STA);
    }
}

しかし、それは、InvalidOperationExceptionがを生成します。アイデア?

役に立ちましたか?

解決

それはSTAで作成されたスレッドになることはできませんので、

スレッドがすでにスレッドプールから割り当てられています。何ができることはあなたのIJob.ExecuteメソッドからSTAスレッドを起動します。

public void Execute(JobExecutionContext context)
{
    Thread t= new Thread(DoSomeWork);
    t.SetApartmentState(ApartmentState.STA);
    t.Start();
    t.Join();
}
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top