Как заставить работу Quartz.net работать в однопоточной квартире?
Я просто попробовал это:
public class FooJob : IJob
{
public FooJob() { }
public void Execute(JobExecutionContext context)
{
Thread.CurrentThread.SetApartmentState(ApartmentState.STA);
}
}
Но это выдает InvalidOperationException. Идеи?
1 ответ
Решение
Поток уже выделен из пула потоков, поэтому он не может стать потоком, созданным в STA. Что вы можете сделать, это запустить поток STA из вашего метода IJob.Execute.
public void Execute(JobExecutionContext context)
{
Thread t= new Thread(DoSomeWork);
t.SetApartmentState(ApartmentState.STA);
t.Start();
t.Join();
}