如何使Quartz.net工作在单线程公寓中运行?

时间:2009-09-19 20:03:02

标签: c# task quartz-scheduler sta apartments

我只是试过这个:

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

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

但它会产生InvalidOperationException。想法?

1 个答案:

答案 0 :(得分:1)

线程已经从线程池中分配,因此它不能成为在STA中创建的线程。你可以做的是从你的IJob.Execute方法启动一个STA线程。

public void Execute(JobExecutionContext context)
{
    Thread t= new Thread(DoSomeWork);
    t.SetApartmentState(ApartmentState.STA);
    t.Start();
    t.Join();
}