Менеджер потоков - PullRequest
       21

Менеджер потоков

0 голосов
/ 27 октября 2008

Я собираюсь построить менеджер потоков для приложения.

Я уже начал работу с потоками, и она работает совершенно нормально, но я хотел бы иметь возможность программно убивать их или получать информацию о них.

У кого-нибудь есть идеи?

Ответы [ 3 ]

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

Только одно быстрое слово предупреждения: не используйте Thread.Abort, если вы действительно не закрываете все приложение (или не вызываете его из потока, который прерываете, и в этом случае вы знаете, что это за поток делаю в самый раз). Если вы действительно хотите иметь возможность «убивать» потоки, я бы посоветовал довольно «мягко» убить - установить флаг и убедиться, что вы регулярно тестируете этот флаг изнутри потока.

Часть моего учебника по потокам рассказывает о чистом завершении потоков - это может оказаться полезным.

1 голос
/ 27 октября 2008

Вы можете посмотреть на Thread.ThreadState, Thread.Interrupt() и Thread.Abort() (как отмечает Джон Скит, это не самый предпочтительный способ остановить поток).

Для сбора всех потоков, запущенных в вашем приложении, используйте

System.Diagnostics.Process.GetCurrentProcess().Threads.

Для получения дополнительной информации, вы можете взглянуть на этот пример монитора потока .

0 голосов
/ 27 октября 2008

Резкое убийство тем: не очень хорошая идея. Вы должны почти всегда общаться с потоком (даже простой изменяемый битовый флаг) и позволить потоку совершить самоубийство. Убивать его очень рискованно и может оставлять замки на предметах и ​​т. Д.

Для более общего случая - вы слышали о параллельных расширениях ? Для .NET 4.0 запланирован совершенно новый уровень управления потоками, включая параллельные расширения LINQ и т. Д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...