Нужно всегда сохранять ссылку на рабочий объект Потока в C#?

Для настройки учетных записей вы можете определить записи в ' ir.property ', т.е. Свойство компании

12
задан ColdFire 25 May 2018 в 13:46
поделиться

6 ответов

Я обычно находил, что, если я должен непосредственно начать новую дискуссию путем, Вы находитесь в своем примере, вместо того, чтобы захватить один от пула потоков, затем это - длительный поток, и мне будет нужна ссылка на него позже, чтобы уничтожить его, контролировать его, и т.д. Поскольку короткий промежуток времени распараллеливает как вызов IO на фоновом потоке, и т.д., я всегда использую поток пула потоков (обычно косвенно через someDelete. BeginBlah (...) вызов метода). Когда использование пула потоков распараллеливает как это, я предпочитаю НЕ иметь в наличии ссылку. Я не знаю, мог ли другой программист неуместно использовать ссылку на тот поток. Если мне не нужна ссылка, я не имею в наличии ее для загромождения кода.

Править: Для ответа на редактирование о собираемых "мусор" потоках это не произойдет, в то время как поток работает. CLR сохраняет ссылку на каждый рабочий поток. Объект, представляющий поток, НЕ будет собран.

13
ответ дан 2 December 2019 в 20:20
поделиться

У меня было много случаев в производственном коде, где выполнение этого было соответствующим. Так, да, который имеют определение и запуск потока в одной строке, не сохраняя ссылку, это - место. Я думаю, сохраняя ссылку "на всякий случай", Вы перепроектируете позже и нуждаетесь в ней, приводит принцип к сбою создания самой простой вещи, которая работает.

И к второй части нет это не будет GC'd, в то время как это работает; потоки являются корневыми объектами уровня, от которых GCtor будет упорно искать ссылки. Экземпляром Потока только будет GCD, после того как это больше не достижимо никаким рабочим потоком включая тот, который Вы запускаете на нем.

И остерегайтесь протекающих экземпляров Потока, которые создаются, но никогда не запускаются. Я полагаю, что они будут бродить вокруг навсегда.

1
ответ дан 2 December 2019 в 20:20
поделиться

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

2
ответ дан 2 December 2019 в 20:20
поделиться

Могло бы быть хорошо задать вопрос, "Как часто это может распараллелить быть запущенным?" Это на приложение, на класс, на экземпляр объекта, или на вызов метода? Это может сказать Вам какой переменная (если таковые имеются) хранить его в.

0
ответ дан 2 December 2019 в 20:20
поделиться

Да, Вы должны, потому что Вы никогда не знаете, когда необходимо будет изменить код позже для обработки потока в некотором роде. Это, и помещающий слишком много материала на одну строку как этот просто ужасно.

Так правдиво можно сделать это путь, таким образом, ответ действительно сводится к предпочтению стиля кода.

0
ответ дан 2 December 2019 в 20:20
поделиться

В дополнение к тому, что "m3rLinEz" отправил выше, другой отступает, то, что, если какое-либо исключение происходит в Вашем потоке, будет трудно даже обнаружить такие случаи.

0
ответ дан 2 December 2019 в 20:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: