В CLR, чем отличается фоновый поток от потока переднего плана? - PullRequest
13 голосов
/ 25 августа 2009

В чем разница между фоновым и передним потоком?

Ответы [ 6 ]

21 голосов
/ 26 августа 2009

С MSDN :

Фоновые темы идентичны потоки переднего плана с одним исключением: фоновый поток не сохраняет среда управляемого выполнения работает.

18 голосов
/ 26 августа 2009

См. эту страницу :

  • Потоки переднего плана имеют возможность предотвратить завершение текущего приложения. CLR не будет закрывать приложение (то есть выгружать хост-домен приложений) до тех пор, пока не прекратятся все потоки переднего плана.

  • Фоновые потоки (иногда называемые потоками демонов) рассматриваются CLR как расходуемые пути выполнения, которые можно игнорировать в любой момент времени (даже если они в настоящее время работают над некоторой единицей работы). Таким образом, если все потоки переднего плана были завершены, любые и все фоновые потоки автоматически уничтожаются при выгрузке домена приложения.

4 голосов
/ 25 апреля 2013

По умолчанию потоки являются приоритетными потоками, то есть они поддерживают приложение в течение всего времени, пока любой из них работает. C # также поддерживает фоновые потоки, которые не сохраняют приложение живо само по себе - завершает работу сразу после завершения всех потоков переднего плана.

1 голос
/ 30 июня 2018

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

0 голосов
/ 18 мая 2019

Существует два типа потоков -

  • Тема переднего плана
  • Фоновая тема

    Каждый раз, когда мы открываем какое-либо приложение, основной поток пользовательского интерфейса имеет тип потока Foreground. Это тип потока по умолчанию. Предположим, что когда мы создаем какой-либо новый поток, по умолчанию текущим типом потока является сам передний план. Если вы хотите изменить тип потока, вам нужно выполнить threadName.IsBackground = true; Теперь начинается основная история. В чем разница ? И зачем нам эти два типа?

Тема переднего плана : Предположим, мы создаем тему Тема A . Если нам нужно, чтобы поток ThreadA продолжал выполняться, несмотря на то, что все другие потоки были прерваны, даже если наш основной поток пользовательского интерфейса больше не жив, тогда в этом случае мы должны сохранить тип потока Foreground. Таким образом, если вы сохраните тип переднего плана потока, то даже если вы закроете приложение, поток переднего плана ThreadA продолжит работать, вы можете отслеживать его также в диспетчере задач.

Фоновые потоки : Теперь, если вы измените тип своего потока на фоновый, то этот поток будет зависеть от другого основного потока. Потому что в случае, если ни один из потоков типа переднего плана больше не работает, тогда весь фоновый поток должен быть принудительно прерван.

0 голосов
/ 15 января 2015

Если какой-либо из потоков переднего плана или фона прерывается, приложение немедленно умирает. Можно изменить поток с переднего плана на задний план и наоборот в любое время в течение срока службы приложения. CLR создает два вида потоков для лучшей поддержки AppDomain. CLR принудительно завершит любые фоновые потоки, которые работают, если приоритетный поток завершается. Все потоки, созданные собственным кодом и входящие в среду управляемого выполнения, помечаются как фоновые потоки.

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