Как заставить работу Quartz.net работать в однопоточной квартире?

StackOverflow https://stackoverflow.com/questions/1449393

Вопрос

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

    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();
}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top