170 похожих чатов

Как при закрытие окна программы (tkinter) правильно закрыть тред с

циклом while true? А то он как-то с ругатеьством просто вываливается, что интерфейса к которому он обращается уже нет)

10 ответов

20 просмотров

Вроде в ткинтере while True не используется, там mainloop() пишешь и всё

Ilia-Nemtsev Автор вопроса
Shrek FALSE
Вроде в ткинтере while True не используется, там m...

У меня интерфейс с фоновым процессом, фоновый процесс сделан через threading, собственно где реализован фоновый процесс с переодическим обновлением части интерфейса, не очень понял к чему тут сейчас о mainloop

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

Ilia Nemtsev
У меня интерфейс с фоновым процессом, фоновый проц...

Может сделать там не while True, а while not stopped, а на закрытие окна повесить stopped = True? Но не уверен что в многопоточном нормально сработает

Ilia-Nemtsev Автор вопроса
Alex
Так же как и в любой другой многопоточной программ...

т.е. в моём случае смотреть статус мейнлупа выходит?

Чо блин?

Ну собственно так это и работает в многопоточном коде. Ты описал примерно то же что и я.

Alex
Ну собственно так это и работает в многопоточном к...

А в каком смысле в конце "ждёшь его завершения"? Мейнлуп должен по событию закрытия окна не только выставлять этот флаг но и ожидать фоновый поток? (И как конкретно это сделать и зачем собственно нужно его ожидать)

Сергей
А в каком смысле в конце "ждёшь его завершения"? М...

Ждать чтобы он корректно завершился. Иначе у тебя есть два варианта: 1. Если поток по каким-то причинам не успел завершиться, но у него daemon=True, он вываливается в случайном месте, со всеми вытекающими последствиями. 2. Если поток использует разделяемое состояние и обращается к объектам, которые могли быть инвалидированы завершением основного потока, получишь закономерный исход. А ждать поток нужно при помощи thread.join

Ilia-Nemtsev Автор вопроса
Alex
Чо блин?

В общем разобрался, сделал, спасибо!

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

Обсуждают сегодня

Ну вот просто даже давайте вот как. Какой нибудь конкретный кейс, можете в пример привести, где бч работает и приносит прикладную пользу, а не просто что бы было? Не крипту.
Alexander Andreev
22
Всем привет! Имеется функция: function IsValidChar(ch: UTF8Char): Boolean; var i: Integer; ValidChars: AnsiString; begin ValidChars := 'abcdefghijklmnopqrstuvwxyzABCDE...
Евгений
44
> Копаем глубже > Следующий момент был, когда я спросил его, знает ли он JavaScript. Он ответил, что его учили работать с C#. Я тоже в университете писал на C#, но даже там мн...
Oleg Volkov
4
лучше скажите, причём тут паскаль?
Alexey Kulakov
36
И никого не интересует какие пакеты кто использует. ((% Заходишь на сайт симфони и видишь поддержку Украины - по законам РФ это ж экстремизм. Только никто не отказывается от с...
Am Ambrion
11
Чтобы перехватить все нажимания буков на форме, надо хук ставить? Пробовал на форме ОнКейДаун, оно ловит клаву если фокус не на компоненте с вводом текста
Serjone
15
Но, может, есть уже проверенная? Наши требования такие: 1. Сообщения должны приходить из Инста в CRM оду 2. Должна быть возможность подключить несколько экаунтов Инстаграм. Р...
Alexander Sharoiko MSE / Александр Шаройко
7
Народ! Впервые клиенту пришло письмо от РКН, у вас, дескать, есть яндекс метрика, а нигде не написано, что вы ее юзаете. Никто не сталкивался?
Sasha Beep
14
Всем привет! вывожу на общей стр дочерние ресурсыв каждом ресурсе галерея, и первая фотка должна выводиться на общей [!DocLister? &prepare=photo !]
Alekso
12
Добрый вечер. Хочу чтобы у меня в классе поле было функцией, которая возвращает строку. Делаю так: interface ... TGetOutPath = function : String of object; ... protec...
Kirill Filippenok
12
Карта сайта