Как зайти в Даркнет?!
25th January, 01:11
6
0
Как в tkinter из поля ввода Entry получить значение в одну переменную и обновить строку кнопкой, затем получить ещё одно введённое значение и затем сложить их. Ниже пример кода
21st July, 19:00
895
0
Программа, которая создает фейковые сервера в поиске игровых серверов CS 1.6 Steam
21st March, 17:43
948
0
Очень долго работает Update запрос Oracle
27th January, 09:58
914
0
не могу запустить сервер на tomcat HTTP Status 404 – Not Found
21st January, 18:02
906
0
Где можно найти фрилансера для выполнения поступающих задач, на постоянной основе?
2nd December, 09:48
938
0
Разработка мобильной кроссплатформенной военной игры
16th July, 17:57
1724
0
период по дням
25th October, 10:44
3955
0
Пишу скрипты для BAS только на запросах
16th September, 02:42
3720
0
Некорректный скрипт для закрытия блока
14th April, 18:33
4613
0
прокидывать exception в блоках try-catch JAVA
11th March, 21:11
4381
0
Помогите пожалуйста решить задачи
24th November, 23:53
6086
0
Не понимаю почему не открывается детальное описание продукта
11th November, 11:51
4351
0
Нужно решить задачу по программированию на массивы
27th October, 18:01
4396
0
Метода Крамера С++
23rd October, 11:55
4309
0
помогите решить задачу на C++
22nd October, 17:31
4002
0
Помогите решить задачу на python с codeforces
22nd October, 11:11
4492
0
Python с нуля: полное руководство для начинающих
18th June, 13:58
2599
0
Как прервать потоки, созданные с помощью ThreadPool.QueueUserWorkItem
есть ли способ прервать потоки, созданные с помощью QueueUserWorkItem?
Или, может быть, мне это и не нужно? Что произойдет, если основное приложение завершит работу? Все ли потоки, созданные из него, автоматически прерываются?
Вам не нужно их прерывать. Когда ваше приложение завершит работу, .NET убьет все потоки с IsBackground = true. .NET threadpool имеет все свои потоки, установленные в IsBackground = true, так что вам не нужно беспокоиться об этом.
Теперь, если вы создаете потоки, обновляя класс Thread, то вам нужно либо прервать их, либо установить их свойство IsBackground в true.
Однако, если вы используете неуправляемый
ресурсы в этих потоках, вы можете
в конечном итоге у вас будет много неприятностей.
Однако, если вы используете неуправляемый ресурсы в этих потоках, вы можете в конечном итоге у вас будет много неприятностей.
Это скорее будет зависеть от того, как вы их используете - если эти неуправляемые ресурсы были должным образом упакованы, то они будут обработаны их оболочкой завершения независимо от механизма, используемого для уничтожения потоков, которые ссылались на них. А неуправляемые ресурсы освобождаются OS, когда приложение все равно завершает работу.
Существует общее ощущение, что приложения (Windows) тратят слишком много времени на очистку при завершении работы приложения-часто с использованием подкачки - в огромных объемах памяти только для того, чтобы его можно было снова отбросить (или код подкачки, который работает вокруг освобождения немаргированных объектов, с которыми OS будет иметь дело в любом случае).
Threadpool использует фоновые потоки. Следовательно, все они будут автоматически закрыты при выходе из приложения.
Если вы хотите прервать поток самостоятельно, вам придется либо управлять потоком самостоятельно (так что вы можете вызвать Thread.Abort() для объекта потока), либо вам придется настроить какую-то форму механизма уведомления, который позволит вам сообщить потоку, что он должен прервать сам себя.
да, они фоновые, но f.ex если у вас есть приложение, где вы используете ThreadPool для какой-то многократной загрузки или чего-то еще, и вы хотите остановить их, как вы остановитесь ? мое предложение было бы следующим: выход из потока asap, f.ex
bool stop = false;
void doDownloadWork(object s)
{
if (!stop)
{
DownloadLink((String)s, location);
}
}
и если вы установите stop = true, то вторые (находящиеся в данный момент в очереди) потоки автоматически выйдут, после того как поток очереди завершит свой процесс.