.Net - сборка взаимодействия занимает 15 секунд для загрузки при ссылке на функцию - PullRequest
1 голос
/ 11 ноября 2008

Это консольное приложение C #. У меня есть функция, которая делает что-то вроде этого:

static void foo()
{
       Application powerpointApp;
       Presentation presentation = null;

       powerpointApp = new Microsoft.Office.Interop.PowerPoint.ApplicationClass();
}

Это все, что он делает. Когда он вызывается, перед срабатыванием функции задерживается пятнадцать секунд. Я добавил что-то вроде этого:

static void MyAssemblyLoadEventHandler(object sender, AssemblyLoadEventArgs args)
{
       Console.WriteLine(DateTime.Now.ToString() + " ASSEMBLY LOADED: " + args.LoadedAssembly.FullName);
       Console.WriteLine();
}

Это срабатывает, сообщая, что мои сборки взаимодействия были загружены примерно за 10 миллисекунд до того, как моя функция foo была запущена. Что я могу сделать по этому поводу? Программа должна вызвать эту функцию (и в конечном итоге сделать что-то еще) один раз, а затем выйти, поэтому мне нужно, чтобы эти сборки были кэшированы или что-то в этом роде. Идеи?

Ответы [ 5 ]

4 голосов
/ 13 ноября 2008

Это может быть список отзыва сертификатов - время ожидания составляет 15 секунд. Есть ли что-нибудь в журнале событий? Можете ли вы проверить, происходят ли какие-либо сетевые подключения во время тайм-аута?

Я опубликовал некоторые подробности о задержке отзыва сертификата некоторое время назад. Перейдите по ссылке, я не буду вырезать и вставить ее здесь.

3 голосов
/ 13 ноября 2008

15 секунд звучит как тайм-аут для меня. Вы подписываете свои собрания? У нас возникла проблема, когда платформа хочет проверить список отзыва сертификатов при загрузке, но не удается через 15 секунд.

НТН

Тим

1 голос
/ 24 марта 2010
<runtime>

   <generatePublisherEvidence enabled="false"/>

</runtime>

Подробнее см. Здесь

http://msdn.microsoft.com/en-us/library/bb629393.aspx

«Мы рекомендуем, чтобы службы использовали этот элемент для повышения производительности при запуске. Использование этого элемента также может помочь избежать задержек, которые могут привести к превышению времени ожидания и отмене запуска службы.»

0 голосов
/ 13 ноября 2008

Если метод foo () не вызывается при запуске приложения, и вам нужно выполнить некоторые другие задачи перед его вызовом, вы можете запустить отдельный поток в начале для загрузки сборок.

0 голосов
/ 11 ноября 2008

Просто догадываюсь, но, возможно, настало время для запуска PowerPoint после загрузки сборок взаимодействия.

...