1

这是一个 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 函数被命中之前大约 10 毫秒已加载。我能做些什么呢?该程序需要调用此函数(并最终执行其他操作)一次然后退出,因此我需要缓存这些程序集或其他东西。想法?

4

5 回答 5

4

它可能是证书吊销列表 - 超时为 15 秒。事件日志中有任何内容吗?您能否检查超时期间是否有任何网络连接发生?

不久前,我在博客上写了一些有关证书吊销延迟的详细信息。点开链接,这里我就不剪贴了。

于 2008-11-13T09:58:03.743 回答
3

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

高温高压

蒂姆

于 2008-11-13T09:51:41.710 回答
1
<runtime>

   <generatePublisherEvidence enabled="false"/>

</runtime>

详情见这里

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

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

于 2010-03-24T04:40:20.253 回答
0

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

于 2008-11-10T23:04:59.413 回答
0

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

于 2008-11-12T22:46:31.273 回答