我最近在Word对象模型的性能方面遇到了一些问题。在我为Word编写的加载项中,我需要解析文档中的所有单词并替换其中的一些单词或向用户询问具有多个替换项的单词。我知道一次向Word询问所有文档文本内容然后再处理它并将其全部放回原点会更快,但这不适合我的加载项,因为我需要访问该范围表示具有多个替换的单词的对象,以便我可以在文档中以某种方式标记它们,并向用户提供一个工具提示,从中可以选择他想要的替换。
所以目前我头脑中的单一速度提升是多线程,因为大多数人已经拥有双核或更好的核心。问题是,你在Google上发现的所有内容都说Office中的多线程是一件非常糟糕的事情。
那么有没有人设法以大多数用法的方式做到这一点?我的意思是,如果它也适用于其他PC,那么开发一个?
第二个问题是:有谁知道为什么Microsoft将Word(Office)对象模型限制为单线程?只是出于好奇:)
答案 0 :(得分:1)
Office中的多线程应该可以正常工作。以下是Microsoft发表的一篇文章:
Walkthrough: Multithreading with the BackgroundWorker Component (C# and Visual Basic)
Office对象模型不是单线程,而是单线程单元(STA)。这实际上是所有VB.Net程序的默认状态( C#默认为MTA )。要了解有关STA与MTA的更多信息,请查看以下链接: