Я унаследовал некоторый код для надстройки VSTO Outlook. Существует требование, чтобы фоновая операция выполнялась периодически. Операция в основном делает некоторый вызов веб-службы и записывает некоторые файлы на диск. Он вообще не обращается к объектной модели Outlook. На данный момент он реализован в виде потока STA, который работает непрерывно, зацикливаясь и засыпая, чтобы достичь времени, когда нужно выполнять работу, интервал времени составляет несколько минут и не должен быть точным.
Заявление о том, что вся обработка в фоновых потоках выполнялась в потоках STA, иначе Outlook вылетает и указывает на эту статью . Моя интерпретация этой статьи заключается в том, что поток STA требуется только в том случае, если я обращаюсь к модели COM COM Outlook, в противном случае я не вижу, как Outlook мог бы знать, что запущен другой поток.
Мне кажется, что было бы лучше использовать System.Threading.Timer
, который запускает работу с потоком пула потоков, а не блокирует выделенный поток на Sleep
. Я хотел бы услышать от любого, кто имеет опыт работы с подобными вещами в офисных надстройках.