Служба сбоя dotnet завершает свои собственные потоки? - PullRequest
0 голосов
/ 17 декабря 2008

У меня есть служба Windows, написанная на dotNet. Существует рабочий сервис, который порождает рабочие потоки с использованием различных Delegate.BeginInvokes. Когда происходит сбой службы, эти потоки будут очищаться автоматически? И если да, то когда?

Ответы [ 2 ]

1 голос
/ 18 декабря 2008

Все потоки, созданные вашим процессом, находятся внутри этого процесса. Когда происходит сбой вашего приложения, ваш процесс умирает, и все потоки в этом процессе внезапно завершаются. Они не заканчиваются как дружественные (им не дают сигнал прерывания или что-то еще), они просто убиты. Им может или не может быть предоставлено достаточно процессорного времени для завершения выполнения, скорее, это зависит от того, что они делали, и от того, насколько быстро Windows выводит процесс из процесса.

Во всех надежных версиях Windows (2000+) процесс должен быть отделен, поэтому, когда он умирает, все пространство процесса сбрасывается и память освобождается. Если вы обращались к неуправляемым ресурсам во время сбоя, то вся картина меняется, и ответ «это зависит».

0 голосов
/ 17 декабря 2008

только когда служба прекращена и выгружена из памяти

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