2016-11-23 5 views
0

У нас есть приложение, которое может экспортировать и импортировать данные в/из MS Project. Количество данных может быть значительным - 1000 задач. Но даже с небольшими частями данных мы заметили странное поведение Project - это может вызвать исключение «приложение занято» в вашем лице, когда вы выполняете более одной операции подряд. Например. создать новую задачу и прочитать ее дату окончания. Он может даже выбросить это исключение в качестве первой операции после того, как вы только что создали объект приложения. Значение:Как избежать исключений «приложение занято» при работе с MS Project через com interop?

var projectApp = new Application(); 
projectApp.Open(...); 

Во второй строке мы можем получить это исключение только потому, что приложение Project по-прежнему загружается.

Я попытался добавить Thread.Sleep, но это не очень хорошо, потому что для некоторых операций требуется больше времени, чем другие, и время, необходимое для работы, различно на разных компьютерах (из-за производительности).

Итак, квестуин: Есть ли способ обнаружить, что приложение Project занято, не получая эти неизбирательные исключения все время?

+1

Google "C# CoRegisterMessageFilter" для хитов. –

ответ

1

Применение STA к задаче с потоком и использование OleMessageFilter Регистрация/Отзыв, найденный с помощью Google, решил проблемы! Спасибо Hans Passant за его комментарий, который привел меня к этому ответу!