получить доступ к списку слов в документе из нескольких потоков - PullRequest
2 голосов
/ 18 марта 2011

У меня недавно были некоторые проблемы с производительностью объектной модели Word.В надстройке, которую я написал для Word, мне нужно проанализировать все слова документа и заменить некоторые из них или попросить пользователя о тех, которые имеют несколько замен.Я знаю, что быстрее запросить Word для всего текстового содержимого документа сразу, а затем обработать его и вернуть обратно все сразу, но это не подходит для моей надстройки, потому что мне нужен доступ к диапазонуобъекты, которые представляют слова, которые имеют множественные замены, так что я могу как-то пометить их в документе и предоставить пользователю подсказку, из которой он может выбрать замену, которую он хочет.

Итак, на данный момент единственный большойулучшение скорости, которое пришло мне в голову, было многопоточным, так как большинство людей уже имеют двухъядерный или лучше.Проблема в том, что все, что вы обнаруживаете в Google, говорит о том, что многопоточность в Office - очень плохая вещь.

Так есть ли кто-нибудь, кто сумел сделать это способом, который работал в большинстве случаев его использования??Под этим я подразумеваю, работал ли он и на других ПК, а не на одном из разработчиков?

И второй вопрос: кто-нибудь знает, почему Microsoft ограничивает объектную модель Word (Office) одним потоком?Просто из любопытства :) 1007 *

1 Ответ

1 голос
/ 18 марта 2011

Многопоточность в Office должна работать просто отлично.Вот статья Microsoft о том, как это сделать:

Краткое руководство: многопоточность с компонентом BackgroundWorker (C # и Visual Basic)

Объектная модель Office не является однопоточнойа точнее однопоточная квартира (STA).На самом деле это состояние по умолчанию для всех программ VB.Net ( C # - MTA по умолчанию ).Чтобы узнать больше о STA против MTA, посмотрите следующие ссылки:

...