.Net — сборки взаимодействия загружаются 15 секунд при ссылке в функции.
-
07-07-2019 - |
Вопрос
Это консольное приложение 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 будет задействована.Что я могу с этим поделать?Программа должна вызвать эту функцию (и, в конечном итоге, сделать что-то еще) один раз, а затем выйти, поэтому мне нужно, чтобы эти сборки были кэшированы или что-то в этом роде.Идеи?
Решение
Это может быть список отзыва сертификатов - время ожидания составляет 15 секунд. Есть ли что-нибудь в журнале событий? Можете ли вы проверить, происходят ли какие-либо сетевые подключения во время тайм-аута?
Некоторое время назад я опубликовал некоторые подробности о задержке отзыва сертификатов . Перейдите по ссылке, я не буду вырезать и вставить ее здесь.
Другие советы
15 секунд для меня звучат как тайм-аут.Вы подписываете свои сборки?У нас возникла проблема: платформа хочет проверить список отзыва сертификатов при загрузке, но терпит неудачу через 15 секунд.
ХТХ
Тим
<runtime>
<generatePublisherEvidence enabled="false"/>
</runtime>
Подробнее смотрите здесь
http://msdn.microsoft.com/en-us/library /bb629393.aspx р>
" Рекомендуется, чтобы службы использовали этот элемент для повышения производительности при запуске. Использование этого элемента также может помочь избежать задержек, которые могут привести к превышению времени ожидания и отмене запуска службы. & Quot;
Просто догадываюсь, но, возможно, настало время для запуска PowerPoint после загрузки сборок взаимодействия.
Если метод foo () не вызывается при запуске приложения, и перед его вызовом необходимо выполнить некоторые другие задачи, вы можете запустить отдельный поток в начале для загрузки сборок.