2009-10-05 7 views
3

System.Threading.Thread.Name은 1 회성 속성입니다. 한 번에 할당 할 수 있으며 응용 프로그램이나 라이브러리 코드에 의해 다른 할당이 수행되지 않은 경우에만 할당 할 수 있습니다. 나는 다중 스레드 이벤트 구동 응용 프로그램을 작성 중이며 그 시간에 수행하는 작업에 따라 현재 실행중인 스레드의 이름을 변경할 수 있어야합니다.왜 .NET에서 Thread.Name을 변경할 수 없습니까?

누구나 이것이 그렇게해야하는 이유를 알고 있습니까? 아니면 CLR 디자이너가이 (잘못된) 가정입니까?

답변

2

일관성을 위해 this old blog post이 발견되었습니다.

내 생각에 당신이 묘사 한 정확한 시나리오에 대해 우리가 원하는만큼 설정할 수 있도록 변경해야합니다. 쓰레드 풀을 사용할 때 디버거에있는 10 개의 일시 정지 된 쓰레드간에 쉽게 구별 할 수 있도록 현재 태스크에 대한 이름을 설정하게되어 기쁩니다.

+0

스레드 풀 안에 초기 이름이나 스레드 ID를 임시 사용자 정의 이름으로 사전을 매핑하여 임시 해결책으로 사용할 수 있습니다. –

+0

그래,하지만 일단 사전과 매핑 이름을 보면 스레드가 "무엇을하고 있는지를 스레드 창에서 빠르게 볼 수있다"는 것을 알게된다. 그게 나에게 쓰레드 이름을 실제로 사용하기 때문이다. 시각. 로깅 목적을 위해, 나는 이미 다른 수단을 사용하고 있습니다. 귀하의 의견을 주셔서 감사합니다. –

2

이것은 의도적으로 설계된 것으로 보입니다. 내 개인적인 추측은 내부 InformThreadNameChangeEx가 스레드 당 한 번만 호출된다는 것입니다.

그러나 threadstatic 필드를 사용하여 현재 실행중인 스레드의 이름을 저장 한 다음이 필드를 사용할 수 있습니다 (예 : 로깅 용).

관련 문제