VSTO: Ускорение добавления задач в MS Project с помощью VSTO

Я использую свой VSTO, чтобы добавить примерно 3000 задач в MS Project. Проблема в том, что добавляется очень медленно - примерно 28-30 минут (а иногда и больше).

Я обязательно отключу обновления экрана, используя: Globals.ThisAddin.Application.ScreenUpdating = false;

Есть ли известное обходное решение этой проблемы или это просто ограничение VSTO?


person Taha Ahmad    schedule 19.12.2012    source источник


Ответы (2)


  1. Project 2010 работает с COM быстрее, чем Project 2007.
  2. Отключите автоматические вычисления: задайте для Application.Calculation значение PjCalculation.pjManual.
  3. Скрыть диаграмму Ганта — оставить на экране только сетку
  4. Вызовите Marshal.ReleaseComObject для объектов интерфейса, которые вам больше не нужны.
person melan    schedule 19.12.2012
comment
Спасибо ... Да, MS Project 2010 работает удивительно быстро по сравнению с MS Project 2007. У меня есть еще одна проблема с производительностью, но я создам из этого новый вопрос. - person Taha Ahmad; 19.12.2012
comment
Как программно скрыть диаграмму Ганта? - person Taha Ahmad; 19.12.2012
comment
Обычно я делаю это вручную, но, возможно, есть способ сделать это с помощью какого-то предопределенного представления — буду рад услышать о решении :) - person melan; 19.12.2012

Это из опыта, который у меня был с Project 2007. Конечно, ваш опыт может отличаться :)

  1. Я обнаружил, что отключение автоматических вычислений не дает столько преимуществ и может снизить точность дальнейших вычислений.

  2. Если вы используете UndoTransactions, не делайте этого. Это окажет ОГРОМНОЕ влияние на производительность как при обработке времени, так и при использовании памяти.

  3. Вызов ScreenUpdating дает преимущества в производительности, но вы должны вызывать его каждый раз перед обработкой задачи.

  4. Кроме того, дополнительный совет, который очень странный. Попробуйте захватить строку заголовка окна MS Project или строку заголовка диалогового окна, которое вы используете для обработки задач, как если бы вы собирались переместить его, а не отпускать. Импорт будет в разы быстрее.

person Ricardo Velhote    schedule 20.02.2013