Интерпретация окна потоков Visual Studio 2005 - PullRequest
1 голос
/ 25 октября 2008

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

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

Мои вопросы

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

2) Что делает этот поток с именем .Net SystemEvents?

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

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

Ответы [ 2 ]

3 голосов
/ 25 октября 2008

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

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

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

0 голосов
/ 28 апреля 2009

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

Существует способ переместить уведомитель 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;
        }));
     }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...