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 回答