如何使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