.Net — сборки взаимодействия загружаются 15 секунд при ссылке в функции.

StackOverflow https://stackoverflow.com/questions/279495

  •  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 () не вызывается при запуске приложения, и перед его вызовом необходимо выполнить некоторые другие задачи, вы можете запустить отдельный поток в начале для загрузки сборок.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top