我简单地尝试这样:

    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();
}
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top