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?

Foi útil?

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
scroll top