Question

I simply tried this:

    public class FooJob : IJob
{
    public FooJob() { }

    public void Execute(JobExecutionContext context)
    {
        Thread.CurrentThread.SetApartmentState(ApartmentState.STA);
    }
}

But it produces InvalidOperationException. Ideas?

Was it helpful?

Solution

The thread has already been allocated from the thread pool so it can't become a thread created in an STA. What you can do is launch an STA thread from your IJob.Execute method.

public void Execute(JobExecutionContext context)
{
    Thread t= new Thread(DoSomeWork);
    t.SetApartmentState(ApartmentState.STA);
    t.Start();
    t.Join();
}
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top