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