在VSTO项目中使用非STA线程来实现并行性?

时间:2018-09-21 13:48:35

标签: c# multithreading parallel-processing vsto sta

很明显,使用VSTO application,主Office应用程序正在运行STA线程,并且产生其他STA线程也没有问题(实际上,它们确实带来了一些挑战,但我们可以解决)。原因是,如果我理解正确的话,STA线程可确保在任何给定时间都有一个线程访问COM对象。 STA就像是说在任何给定时间只能运行一个线程。

但是从理论上讲,如果我们不执行任何与COM相关的操作,我们是否可以派生一个既不是STA(也可能不是MTA)的线程来实现真正的并行性?还是在可能的并行性意义上,STA仅适用于COM对象,但是就COM而言,STA才不允许这样做?

1 个答案:

答案 0 :(得分:0)

如果您不从那些线程访问Office对象,并且不访问UI ,则可以自由使用非STA线程(出于您自己的目的)。从那些线程。您只需要确保在卸载加载项时终止这些线程。在这种情况下,office应用程序甚至都不知道您的线程存在。