シングルスレッドアパートメントで実行するQuartz.net仕事にする方法?
-
11-09-2019 - |
質問
私は単にこれを試します:
public class FooJob : IJob
{
public FooJob() { }
public void Execute(JobExecutionContext context)
{
Thread.CurrentThread.SetApartmentState(ApartmentState.STA);
}
}
しかし、それは、InvalidOperationExceptionがを生成します。アイデア?
解決
それはSTAで作成されたスレッドになることはできませんので、
スレッドがすでにスレッドプールから割り当てられています。何ができることはあなたのIJob.ExecuteメソッドからSTAスレッドを起動します。
public void Execute(JobExecutionContext context)
{
Thread t= new Thread(DoSomeWork);
t.SetApartmentState(ApartmentState.STA);
t.Start();
t.Join();
}
所属していません StackOverflow