views:

249

answers:

1

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?

A: 

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();
}
AndyM