这是一个C#控制台应用程序。我有一个这样的功能:

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

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

就是这样。当它被调用时,在函数被击中之前有15秒的延迟。我添加了这样的东西:

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

这被解雇告诉我在我的foo函数被击中之前我的interop程序集已加载大约10毫秒。我该怎么办?程序需要调用此函数(并最终执行其他操作)一次然后退出,因此我需要缓存这些程序集或其他东西。想法?

有帮助吗?

解决方案

它可能是证书撤销列表 - 此时的超时为15秒。 事件日志中有什么内容吗?你可以检查在超时期间是否发生任何网络连接吗?

我刚才在博客上发布了一些关于证书撤销延迟的细节。按照链接,我不会在这里剪切并粘贴它。

其他提示

15秒对我来说听起来像是暂停。你在签署你的集会吗?我们遇到一个问题,框架在加载时想要检查证书撤销列表,但在15秒后失败。

HTH

<runtime>

   <generatePublisherEvidence enabled="false"/>

</runtime>

详情请见此处

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

“我们建议服务使用该元素来提高启动性能。使用此元素还可以帮助避免可能导致超时和取消服务启动的延迟。“

猜测,但可能是在互操作程序集加载后PowerPoint启动的时间。

如果在应用程序启动时没有调用方法foo(),并且在调用它之前还有其他一些任务要做,那么可以在开始时启动一个单独的线程来加载程序集。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top