2012-01-23 1 views
0

VB.NET 웹 서버에서 사용자 지정 작성되지 않은 관리되지 않는 DLL 함수를 호출하고 있습니다. 멀티 코어 서버의 웹 서비스를 통해이 DLL을 호출하면 문제가 발생하며 항상 충돌합니다.VB.NET에서 관리되지 않는 DLL 호출에 대한 특정 프로세서 선호도 강제 적용

서버를 재부팅하고 단일 코어 만 사용하도록 설정하면 항상 정상적으로 실행되고 절대로 충돌하지 않습니다.

나는 DLL 호출 직전과 직후에 디버깅 코드를 출력 했으므로 DLL 호출이 크래시를 담당한다는 것을 알고 있습니다.

.NET 코드의 프로세서 선호도를 1 코어로 강제 설정할 수 있지만 관리되지 않는 DLL에는 적용되지 않습니다.

어떻게 문제를 해결할 것이라고 확신하기 때문에 단독 실행 DLL을 단일 코어에서만 실행하도록 할 수 있습니까?

DWORD_PTR processAffinityMask = 0x1;

SetProcessAffinityMask(GetCurrentProcess(), processAffinityMask);

이 첫 번째 CPU에 DLL의 프로세스 선호도를 설정합니다 : 당신은 DLL 코드에 액세스 할 수있는 경우

답변

0

는 당신은 DllMain에서 다음 줄 같은 것을 사용할 수 있습니다.

+0

감사합니다. boto, 정말 고맙습니다. 불행히도 우리는 소스 코드가 없습니다. 그것은 약 10 년 전의 오래된 fortran dll이지만 여전히 필수적입니다. –