ASP.NET VB.NET COM DLL을 사용해야하는 ASP.NET 웹 API 프로젝트가 있습니다. 나는 하나의 컨트롤러를 가지고 있는데, 여기서 com dll로부터 클래스의 객체를 생성하고 그 객체를 내 행동에 사용한다. 제가 ca에서 그 행동을 부를 때 모든 것이 작동하는 것 같습니다.COM DLL을 사용하는 ASP.NET 웹 API
Creating an instance of the COM component with CLSID from the IClassFactory failed due to the following error: 800401f7 (or 800a01b8).
나는 그 COM 구성 요소는 STA 스레드 모드에서 실행 찾았지만, ASP.NET 웹 API의 : 나는 더 많은 스레드에서 실행할 때 2000에서 2500 개 사이 스레드는하지만, 그때는 COM 개체의 인스턴스를 생성하는 동안이 오류가 MTA 스레드 모드이지만 ASP.NET Web API 프로젝트에서 STA 모드로 변경하는 방법을 찾을 수 없기 때문에이 문제가 발생했는지는 알 수 없습니다.
저는 자체 호스팅 ASP.NET Web API를 사용하며 Windows 서비스에서 호스팅합니다. 서비스를 중지하고 다시 실행하면 ca를 다시 보낼 수 있습니다. 2500 스레드. 편집
: 나는이 같은 샘플 Windows 응용 프로그램에서 스레드를 생성 :
for (int i = 0; i < threadsCount; i++)
{
Task task = Task.Factory.StartNew(() => {
for (int j = 0; j < loopCount; j++)
{
SendRequest();
}
});
}
EDIT2 : 아마 작업 관리자에서 나는 그 자라 처리 볼 수 있기 때문에 객체는 해제되지 않습니다 나는이 오류가 COM 그것이 2000+ 핸들을 가지고있을 때. Marshal.ReleaseComObject를 호출하므로 잘못 될 수 있는지 잘 모르겠습니다.
이 작업을하지 않으면 컴퓨터가 스레드를 차단하고 최대 스레드는 컴퓨터에서 기본값으로 설정되며 프로세서의 코어에 의해 제한됩니다. – IamStalker
하지만 com 객체를 호출하지 않아도 아무런 문제가 없습니다. –
나는 당신이 그것을 평행하게 생각하지 않는다. – IamStalker