Como fazer trabalho Quartz.net para ser executado em um apartamento single-threaded?
-
11-09-2019 - |
Pergunta
Eu simplesmente tentei isso:
public class FooJob : IJob
{
public FooJob() { }
public void Execute(JobExecutionContext context)
{
Thread.CurrentThread.SetApartmentState(ApartmentState.STA);
}
}
Mas ela produz InvalidOperationException. Ideias?
Solução
O segmento já foi alocada do pool de threads para que ele não pode se tornar um segmento criado em um STA. O que você pode fazer é lançar um segmento STA do seu método IJob.Execute.
public void Execute(JobExecutionContext context)
{
Thread t= new Thread(DoSomeWork);
t.SetApartmentState(ApartmentState.STA);
t.Start();
t.Join();
}
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow