Должен ли я убить функцию, работающую как поток (.Net) - PullRequest
1 голос
/ 15 ноября 2009

Я только начал с C #. Я запускаю функцию объекта в виде потока (новый поток (myFunc) .Start ()).

Поток самоуничтожается, когда функция завершена, или я должен вручную от нее избавиться? Если я должен, каков наилучший способ сделать это (я могу не знать, когда это заканчивается и т. Д.)?

Thanx!

Ответы [ 2 ]

7 голосов
/ 15 ноября 2009

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

2 голосов
/ 15 ноября 2009

Темы длятся в течение всего срока их работы; после завершения функции поток автоматически умирает.

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

Например:

ThreadPool.QueueUserWorkItem(delegate { myFunc(); });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...