Интерпретация окна потоков Visual Studio 2005

Я создал простое приложение Windows .NET в Visual Studio 2005, и, просто войдя в событие загрузки основной формы, мое окно потоков выглядит так, как показано на следующем рисунке:

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

Мои вопросы

1) Почему в первую очередь так много потоков, когда я еще не начал ни одного (кроме «Основного потока» моего приложения)

2) Что делает этот поток под названием «.Net SystemEvents»?

3) Почему записи в столбце «Местоположение» для всех потоков, кроме основного потока, пусты?

EDIT:
4) Можно ли сделать так, чтобы эти темы не запускались? или уйти через какое-то время?
5) Что они должны делать? какова их цель?


person Raminder    schedule 25.10.2008    source источник


Ответы (2)


1) Это потоки, которые являются частью управляемой среды.

2) Он отслеживает системные события, для которых вы можете зарегистрировать обработчики событий, например, когда вы меняете настройки дисплея и тому подобное.

3) Поскольку они являются частью фреймворка, а не кода вашего приложения, поэтому отладчику неизвестно исходное местоположение.

person Gerald    schedule 25.10.2008

Помните, что между неуправляемым потоком и управляемым потоком существует отношение один ко многим.

Есть способ переместить уведомитель SystemEvents в ваш поток:

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;
        }));
     }
person GregC    schedule 28.04.2009