2008-10-25 7 views
1

나는 비주얼 스튜디오 2005 간단한 .NET Windows 응용 프로그램을 만들어 해석하고 단지 기본 폼로드 이벤트를 입력 내 스레드 창은 다음 그림과 같이이다 :비주얼 스튜디오 2005 스레드 창

http://img519.imageshack.us/my.php?image=threadshh4.jpg

내 질문은 내가 내 응용 프로그램의 '메인 스레드')

2) '라는 이름이 스레드를 무엇 닷넷 SystemEvents에서 모든 (떨어져 시작하지 않은 왜 처음부터 너무 많은 스레드가

1

)입니다 '할거야?

3) 메인 스레드를 제외한 모든 스레드의 '위치'열의 항목이 비어있는 이유는 무엇입니까?

편집 :
4)는이 스레드가 시작되지 만들 수 있습니까? 잠시 후 떠나시겠습니까?
5) 그들은 무엇을 의미합니까? 그들의 목적은 무엇입니까?

답변

3

1) 스레드는 관리되는 프레임 워크의 일부입니다.

2) 디스플레이 설정을 변경할 때와 같이 이벤트 처리기를 등록 할 수있는 시스템 이벤트를 모니터링합니다.

3) 응용 프로그램 코드가 아닌 프레임 워크의 일부이므로 소스 위치가 디버거에 알려지지 않습니다.

0

관리되지 않는 스레드와 관리되는 스레드 사이에는 일대 다의 관계가 있습니다.

public static class ThreadingHelper_NativeMethods 
{ 
    [DllImport("user32.dll")] 
    public static extern bool IsGUIThread(bool bConvert); 
} 


    // This code forces initialization of .NET BroadcastEventWindow to the UI thread. 
    // http://social.msdn.microsoft.com/Forums/en-US/netfxbcl/thread/fb267827-1765-4bd9-ae2f-0abbd5a2ae22 
    if (ThreadingHelper_NativeMethods.IsGUIThread(false)) 
    { 
     Microsoft.Win32.SystemEvents.InvokeOnEventsThread(new MethodInvoker(delegate() 
     { 
      int x = 0; 
     })); 
    } 
:

스레드에 통지 SystemEvents를 이동하는 방법이있다

관련 문제