我只是试过这个:
public class FooJob : IJob
{
public FooJob() { }
public void Execute(JobExecutionContext context)
{
Thread.CurrentThread.SetApartmentState(ApartmentState.STA);
}
}
但它会产生InvalidOperationException。想法?
答案 0 :(得分:1)
线程已经从线程池中分配,因此它不能成为在STA中创建的线程。你可以做的是从你的IJob.Execute方法启动一个STA线程。
public void Execute(JobExecutionContext context)
{
Thread t= new Thread(DoSomeWork);
t.SetApartmentState(ApartmentState.STA);
t.Start();
t.Join();
}