2010-06-18 6 views

답변

1

(매우 시작으로 21) 그것의 미친 수 있습니다. 관리되는 프로그램의 모든 스레드는 원래 관리되지 않는 스레드로 시작된 스레드를 포함하여 관리되는 코드를 실행할 수 있습니다. 대부분은 메인 스레드와 모든 스레드 풀 스레드가 순수하게 관리되지 않는 코드를 실행하기 시작합니다. Marshal.GetDelegateForFunctionPointer()가 제공하는 게이트웨이 종류를 통해 관리되는 코드로 쓰입니다.

수십 개의 (그렇지 않은 경우 비활성) 스레드를 보는 것이 일반적이지 않습니다. 일반적으로 COM 서버에 의해 시작된 스레드 풀 스레드 및 스레드입니다. .NET에서 이러한 스레드에 Thread.ManagedThreadId를 사용해야하는 배관이 누락되었습니다. 의도적 인 논리적 .NET 스레드는 물리적 운영 체제 스레드 일 필요는 없습니다. 현재 사용중인 호스트가 없지만 그렇지 않은 경우가 있습니다.

질문하지 않아도됩니다.

+0

알려 주셔서 감사합니다. 그러나 나는 대답을 갖고 싶다. 언제든지 내 응용 프로그램에서 관리되는 스레드의 수를 확인하는 방법은 무엇입니까? –

+0

그들을 생성하고 계산하십시오. –

+0

그게 포인트 야! 나는 3D 파티 API를 사용하고 세부 사항을 공개하고 싶지 않으며 스레드 풀이나 다른 소프트웨어 등을 사용할 수도 있습니다. –

1

디버깅 인터페이스를 사용할 수 있는지 여부는 확인하지 않았지만 VS는 디버거에서 관리되는 스레드를 표시하므로 사용자도 가져올 수 있어야합니다.

.NET에서 디버거 작성은 예상보다 훨씬 쉽습니다. 디버거를 구현하는 것은 기본적으로 ICorDebug 인터페이스를 구현하는 것으로 구성됩니다.

Microsoft의 샘플은 다음과 같습니다. Managed Debugger Sample

관련 문제