How to make Quartz.net job to run in a single-threaded apartment?
-
11-09-2019 - |
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?
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