C# .Net-在函数中引用时,加载互操作程序集需要15秒

C# .Net-在函数中引用时,加载互操作程序集需要15秒,c#,.net,com-interop,C#,.net,Com Interop,这是一个C控制台应用程序。我有一个函数,它的作用如下: static void foo() { Application powerpointApp; Presentation presentation = null; powerpointApp = new Microsoft.Office.Interop.PowerPoint.ApplicationClass(); } static void MyAssemblyLoadEventHandler(o

这是一个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();
}
这就是它的全部功能。调用该函数时,在函数被命中之前有15秒的延迟。我添加了如下内容:

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();
}

这会被触发,告诉我我的互操作程序集在我的foo函数被命中之前大约10毫秒就被加载了。我能做些什么?程序需要调用这个函数并最终执行其他操作一次,然后退出,所以我需要缓存这些程序集或其他操作。想法?

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

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

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

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

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


蒂姆

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


Tim

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


刚才。按照链接进行操作,我不会将其剪切并粘贴到此处。

可能是证书吊销列表-此操作的超时时间为15秒。
<runtime>

   <generatePublisherEvidence enabled="false"/>

</runtime>
事件日志中有什么内容吗?您能否检查在超时期间是否发生了任何网络连接

刚才。跟随链接,我不会在这里剪切和粘贴它

<runtime>

   <generatePublisherEvidence enabled="false"/>

</runtime>
详情请参见此处

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

详情请参见此处


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

如果您将PowerPoint作为常规应用程序手动启动,是否也需要15秒?否。它马上就出现了。如果您手动启动PowerPoint作为常规应用程序,是否也需要15秒?不。它马上出现。它在加载程序集后立即启动。该函数在加载之前甚至不会被命中。请尝试使用taskmanager监视,因此您可以调用该函数,如果此时加载了ppowerpoint.exe,则该函数可能会延迟,因为它会在加载程序集后立即启动。该函数在加载之前甚至不会被命中。请尝试使用taskmanager监视,因此您可以调用该函数,如果此时加载了ppowerpoint.exe,它可能会延迟,因为这是一个非常好的建议。我注意到装配加载时连接超时。这是一个非常好的建议。我注意到一个连接在加载程序集时超时。