2011-01-30 2 views
3

C#의 다른 스레드에서 주 스레드에 대한 참조를 얻으려면 어떻게해야합니까?C#의 기본 스레드에 대한 참조

왜 필요합니까? 예를 들어 콘솔 응용 프로그램에로드 된 어셈블리를 예로 들어 보겠습니다. 이 어셈블리는 콘솔 응용 프로그램의 주 스레드에서 대기 (조인)하려는 다른 스레드를 발생시킵니다. 어떻게 그럴 수 있을까요?

저는 Visual Studio 2010에서 디버깅하는 동안 스레드 정보를 검사 할 수 있습니다. 스레드 창의 열 중 하나는 스레드가 작업자 스레드인지 또는 기본 스레드인지를 지정하는 범주입니다. 이 정보를 얻을 수 있습니까?

또는 다음과 같이하십시오. 진입 점 (주 스레드) 인 함수의 이름을 얻고 현재 프로세스의 모든 스레드를 반복하는 것은 어떻습니까? 이 정보를 어떻게 얻을 수 있습니까?

감사합니다.

+2

"이 어셈블리는 콘솔 응용 프로그램의 주 스레드에서 대기 (조인)하려는 다른 스레드를 발생시킵니다. 어떻게합니까?" 일반적으로 주 스레드는 다른 스레드와 결합합니다. 당신이 말하는 것에 대한 필요성을 본 적이 없어요. – bzlm

+0

그건 스레드 이름이 아닌 카테고리입니다. – SLaks

+0

엔트리 포인트에 대한 어셈블리의 반사는 어떻습니까? 누군가가 엔트리 포인트 방법을 찾는 방법을 알아낼 수 있습니까? – Vertilka

답변

2

Thread.CurrentThread (기본 스레드가 됨)에 대한 참조를 다른 스레드 생성시 저장할 수 있습니다.

+0

Andray의 응답에 대한 코멘트를보세요 – Vertilka

1

실제로 스레드가 실제로 없습니다. 당신이 더 많은 스레드를 스폰하면 중요한 스레드가 더 이상 중요하지 않게됩니다. 가장 먼저 생성 된 스레드를 확인하는 유일한 방법은 전역 정적 필드에 참조를 저장하는 것입니다.

+2

그래서 UI 스레드는 무엇입니까 ?? 물론 ** UI 스레드 **는 "주 스레드"가 의미하는 것입니다. 나는 너에게 동의하지 않는다. – Aliostad

+0

@Aliostad : UI 스레드는 현재'Application.Run'을 호출하는 스레드입니다. 기술적으로, 그들은 다른 스레드와 다르지 않습니다. – SLaks

+1

@SLaks 예 사실이지만, 그들이하는 일은 매우 다릅니다. WIN32 메시지 루프를 처리하면 다르게 처리해야합니다. – Aliostad

관련 문제