1 | ||||||
Как правильно завершить поток (программа часы в Label)14.11.2016, 17:50. Показов 1286. Ответов 5
Метки нет (Все метки)
Здравствуйте, есть простая многопоточная программа - на форме в Label отображается время (программа во вложении).
Программа работает, но есть проблема с завершением программы. Если просто нажать на крестик, то программа вылетает с ошибкой. А если сначала нажать на кнопку "Остановить поток" и потом на крестик, тогда все правильно завершается. Вопрос: почему программа некорректно завершается, когда я нажимаю на крестик, ведь код на событие кнопки и на крестике (Form1_FormClosing) один и тот же. Кликните здесь для просмотра всего текста
0
|
14.11.2016, 17:50 | |
Ответы с готовыми решениями:
5
Как правильно завершить поток Как правильно завершить поток сервера? Как правильно завершить поток FileStream Как правильно завершить поток без исключения ThreadInterruptedException? |
64 / 65 / 44
Регистрация: 05.12.2014
Сообщений: 475
|
||||||
14.11.2016, 18:15 | 3 | |||||
добавить в FormLoad:
Добавлено через 6 минут п.с. до запуска потока
0
|
14.11.2016, 18:19 [ТС] | 4 |
Да, с таким свойством работает.
Но почему не работает мой вариант? При нажатии на крестик вызывается событие Form1_FormClosing, в нем вызывается метод StopTime(); который вызывает метод worker.Cancel(); который делает переменную _canceled = true; которая прерывает цикл, после чего поток сам должен завершиться.
0
|
64 / 65 / 44
Регистрация: 05.12.2014
Сообщений: 475
|
|
14.11.2016, 18:32 | 5 |
Потому что поток не завершается сразу при вызове Cancel, CLR сама решает когда его закончить, поэтому возникает момент когда лебела уже нет а поток всё пытается его поменять. (инфа не 100% )
0
|
7 / 7 / 3
Регистрация: 10.04.2015
Сообщений: 57
|
|
14.11.2016, 20:59 | 6 |
Попробуй в событии Form1_FormClosing Отписываться от евентов связанных с формой которая закрывается.
0
|
14.11.2016, 20:59 | |
14.11.2016, 20:59 | |
Помогаю со студенческими работами здесь
6
Как правильно завершить поток QThread и выйти из него? Как правильно завершить поток, который лочит мьютекс в цикле? Правильно завершить поток Правильно завершить поток Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |