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

그게 전부입니다. 그것이 호출되면 함수가 치기 전에 15 초 지연이 있습니다. 다음과 같은 것을 추가했습니다.

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

이것은 내 FOO 기능이 치기 전에 내 인터 로프 어셈블리가 약 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