.Net: ensamblajes de interoperabilidad que tardan 15 segundos en cargarse cuando se hace referencia en una función

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

  •  07-07-2019
  •  | 
  •  

Pregunta

Esta es una aplicación de consola C #. Tengo una función que hace algo como esto:

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

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

Eso es todo lo que hace. Cuando se llama, hay un retraso de quince segundos antes de que se golpee la función. Agregué algo como esto:

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

Esto se dispara diciéndome que mis ensamblajes de interoperabilidad se han cargado unos 10 milisegundos antes de que se ejecute mi función foo. ¿Qué puedo hacer sobre esto? El programa necesita llamar a esta función (y eventualmente hacer algo más) una vez y luego salir, así que necesito que estos ensamblados se almacenen en caché o algo así. Ideas?

¿Fue útil?

Solución

Podría ser la lista de revocación de certificados: el tiempo de espera es de 15 segundos. ¿Hay algo en el registro de eventos? ¿Puede verificar si hay conexiones de red durante el tiempo de espera?

Hace un blog escribí algunos detalles sobre el retraso de revocación de certificados hace un tiempo. Sigue el enlace, no lo cortaré y pegaré aquí.

Otros consejos

15 segundos me parecen un tiempo de espera. ¿Estás firmando tus asambleas? Tuvimos un problema en el que el marco desea verificar la lista de revocación de certificados al cargar, pero falla después de 15 segundos.

HTH

Tim

<runtime>

   <generatePublisherEvidence enabled="false"/>

</runtime>

Ver aquí para más detalles

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

" Recomendamos que los servicios utilicen el elemento para mejorar el rendimiento de inicio. El uso de este elemento también puede ayudar a evitar demoras que pueden causar un tiempo de espera y la cancelación del inicio del servicio. & Quot;

Solo adivinando, pero probablemente sea el momento de que PowerPoint se inicie después de que se hayan cargado los ensamblados de interoperabilidad.

Si el método foo () no se llama al inicio de la aplicación y tiene otras tareas que hacer antes de que se llame, puede comenzar un hilo separado al principio para cargar los ensamblados.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top