Как заставить Quartz.net работать в однопоточной квартире? - PullRequest
1 голос
/ 20 сентября 2009

Я просто попробовал это:

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

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

Но это выдает InvalidOperationException. Идеи?

1 Ответ

1 голос
/ 21 октября 2009

Поток уже выделен из пула потоков, поэтому он не может стать потоком, созданным в STA. Что вы можете сделать, это запустить поток STA из вашего метода IJob.Execute.

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