1

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

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

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

ただし、InvalidOperationException が生成されます。アイデア?

4

1 に答える 1

1

スレッドはスレッド プールから既に割り当てられているため、STA で作成されたスレッドになることはできません。できることは、IJob.Execute メソッドから STA スレッドを起動することです。

public void Execute(JobExecutionContext context)
{
    Thread t= new Thread(DoSomeWork);
    t.SetApartmentState(ApartmentState.STA);
    t.Start();
    t.Join();
}
于 2009-10-21T05:46:49.923 に答える