2

.NET Framework 3.5를 디버깅하는 동안 WinForms 응용 프로그램에서 이름이없는 "Worker Thread"를 발견했습니다.빈 작업자 스레드는 무엇입니까?

응용 프로그램을 열 때 기본적으로 하나의 작업자 스레드가 있음을 알고 있습니다. 그러나 디버깅 중간에 디버거를 일시 중지하고 "스레드"창을 살펴보면 비슷한 스레드 5 개 (우선 순위 = 보통)가 표시됩니다. 응용 프로그램에서 열

모든 스레드가 이름을 가지고, 그래서 이들은 적어도 Thread.Start()를 통해, 코드에서 열리지 않습니다

내가 더블 클릭을 시도, VS.NET은 할 수 없습니다 코드를 찾으십시오.

이 스레드는 무엇입니까? 그것들은 정상적인가, 또는 어떤 조작은 어떻게 든 비어있는 스레드를 남겨 두는가?

타이머 또는 유사하지 않은 명백한 컨트롤이 될 수 있습니까? 함수는 백그라운드에서 임시 스레드와 함께 작동합니까?

+0

System.Windows.Forms.Timer는 단일 스레드이며 부모 (일반적으로 " 메인 스레드 ") 스레드. –

답변

5

방금 ​​VS의 스레드를 WinDbg의 스레드와 비교했을 때 스레드 창에 VS에서 스레드 풀 스레드를 "작업자 스레드"로 표시합니다. 따라서 BackgroundWorker, Timer, BeginInvoke 또는 유사한 스레드 풀 기능을 사용하기 때문에 시작된 스레드라고 생각합니다. 당신이 파일 대화 상자를 저장/GetOpenFilename에() (또는 ppen를 제기 다른 함수를 호출 할 때 윈도우 응용 프로그램에 스레드를 추가 점에

0

계속 Rushyo의 게시물에서 이러한 스레드는 Visual Studio가 프로그램을 호스팅하고 디버깅하는 방법과 관련 될 수 있습니다. Visual Studio 외부에서 릴리스 빌드를 실행하고 프로세스 탐색기를 사용하여 자세히 조사해 보았습니까?

명시 적으로 VS 호스팅의 일부가 아닌 경우 타이머, 비동기 메서드 호출에 사용되는 .NET 스레드 풀과 관련이 있습니다.

0

이다.

Windows가 분명히을 백그라운드에서 드라이브/폴더 스캔을 수행하고 대화 상자를 닫은 후에 스레드를 유지합니다. 방금 전에 시도한 결과로이 사실을 발견했습니다.

+0

그건 꽤 흥미 롭습니다. –

관련 문제