IIS6에서 호스팅되는 웹 서비스에 사용되는 타사 DLL이 있습니다. 문제는 일단이 dll이 메모리에로드되면 스레드를 만든 스레드와 다른 스레드가 dll 내의 모든 코드를 실행하려고하면 예외 AccessViolationException이 발생한다는 것입니다. 작업자 프로세스는 다중 스레드이며 웹 서비스에 대한 각 호출은 풀에서 임의의 스레드를 가져옵니다. 우리는 그것을 메모리에서 언 로딩하고 필요할 때마다 다시로드하려고 시도했지만 프런트 엔드는 .Net이고 나머지는 관리되지 않으므로 실제로 메모리에서 완전히 언로드되지 않습니다. VB와 .Net 2.0을 사용하고 있습니다. 어떤 제안?IIS에서 코드를 실행하는 데 동일한 스레드를 사용하는 방법은 무엇입니까?
(롭 워커에 대한 응답)
우리는 새로운 스레드를 생성하고 DLL을 호출하는 데 사용에 대한 생각했지만, 우리가 어떻게 스레드 앉아 전화를 걸고 대기 않습니다? .Net 3.0에서 제공 한 Dispatcher 클래스를 사용하지 않고 어떻게 호출을 스레드에 위임합니까? 숨겨진 양식을 작성하여 메시지 루프에 넣으면 효과가있을 수 있습니다. 그리고 폼의 Invoke() 메소드를 호출 할 수 있습니다. 그러나 IIS 호스팅 웹 서비스 내에 양식을 만들면 많은 문제가 발생할 수 있습니다.