|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
03.02.2017, 16:18 | #31 | ||
Спокойный псих
Участник клуба
Регистрация: 19.03.2013
Сообщений: 1,538
|
Кто сказал говнокод ? Я учусь, и свой "говно"-код пишу из личного интереса.
Принципиально ? Нет ... Я же не стал писать свой Imap ... моя тема. Отрицание ? Опять же - нет; пишу "говно"-код, для себя. Цитата:
Цитата:
К тому же, если говорить по хорошему - убивать потоки абортом нехорошо, а это значит - нужно ещё и потоки допиливать. Тем более не стоит сравнивать сервер с программой, в которой (программе) нет никаких коннектов. За таймеры спасибо.
Подпись ? Не, не слышал ...
|
||
03.02.2017, 17:37 | #32 | |
Старожил
Регистрация: 12.01.2011
Сообщений: 19,500
|
Так как учитесь-то если вам подсказывают как правильнее сделать, а вы не делаете?
Или чему вы учитесь? Цитата:
Я ж показывал пример http://www.programmersforum.ru/showt...=2#post1661912 А восстановление после выполнения работы тоже не нужно что ли?
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом. |
|
03.02.2017, 18:22 | #33 |
Спокойный псих
Участник клуба
Регистрация: 19.03.2013
Сообщений: 1,538
|
После выполненной работы поток просто завершается выходом из функции, ничего лишнего. Сброс запуска потока до завершения обратного отсчёта подразумевает полный сброс данных, ИЛИ допиливание потока таким образом, что бы этот поток мог понять, что обратный отсчёт не завершён, произошла пользовательская отмена ... А мне лень это делать, ибо от перезапуска никто и ничего не пострадает.
Учусь всему, что похоже на программирование, включая даже то, "как нельзя делать".
Подпись ? Не, не слышал ...
Последний раз редактировалось OmegaBerkut; 03.02.2017 в 18:25. |
03.02.2017, 18:45 | #34 |
Старожил
Регистрация: 12.01.2011
Сообщений: 19,500
|
Не надо поток "сбрасывать", надо просто завершиться ему, что делается примерно 3 строчками:
Код:
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом. |
04.02.2017, 09:43 | #35 |
Спокойный псих
Участник клуба
Регистрация: 19.03.2013
Сообщений: 1,538
|
У меня форма обратного отсчёта для этого требует введение дополнительного флага "отмена пользователя", и к основному потоку ещё нужно прикрутить проверку этого флага; и выполнение безоговорочного return на true ... Но, перед этим return нужно ещё занулить все имеющиеся ссылки. А мне лень это делать.
Подпись ? Не, не слышал ...
|
04.02.2017, 12:01 | #36 |
Старожил
Регистрация: 12.01.2011
Сообщений: 19,500
|
Какого флага? И как связаны флаг и форма?
CancellationToken это и есть флаг. Надо просто вызвать Cancel() на CancellationTokenSource.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом. |
04.02.2017, 13:23 | #37 |
Спокойный псих
Участник клуба
Регистрация: 19.03.2013
Сообщений: 1,538
|
Флаг - это типа можно завести любое условие, при разрешении которого выполняются определённые инструкции. Самый простой флаг - bool user_cancel; в моём случае.
Флаг с формой может быть связан очень просто - public bool user_cansel; и доступ к этому флагу извне по ссылке на форму обратного отсчёта.
Подпись ? Не, не слышал ...
Последний раз редактировалось OmegaBerkut; 04.02.2017 в 13:50. |
04.02.2017, 14:02 | #38 |
Старожил
Регистрация: 12.01.2011
Сообщений: 19,500
|
Чот это сложно, а не просто
Куда-то передавать ссылки аж на всю форму, что-то делать с ее полями. Проще когда UI изолирован от основной логики, как в моем примере: просто функция, которая принимает время и callback (ссылка на функцию, которая вызовется в конце). И возвращает объект, на котором можно вызвать Cancel() для досрочного завершения. Вообще флаги типа IsWorking, IsCancelling, ..., IsReinventingAWheel, IsEatingDinner лучше не плодить, обычно для такого проще и удобнее использовать какой-то один State (enum и т.п.) Но вообще тут же форме наверно необязательно знать о том, что происходит отмена (если это не какой-то долгий и негарантированный процесс), так что можно считать, что оно мгновенно завершается при Cancel() и форме нужно только 2 состояние: Idle и Working. И наверно ж вам все равно нужно обрабатывать переход из 2 в 1 (включить кнопку запуска и т.п.) после нормального завершения работы (дождалось указанного времени и выполнило то, что нужно), если вы и тогда не убиваете сразу программу.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом. Последний раз редактировалось Alex11223; 04.02.2017 в 14:34. |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Аналог Thread.Sleep или Task.Delay | vovaza29 | C# (си шарп) | 12 | 17.09.2015 21:22 |
работа с файлом txt с помощью потока thread в С++ | helpmybrains | Помощь студентам | 0 | 04.12.2014 10:49 |
Истекло время ожидания (Timeout). Время ожидания истекло до завершения операции или сервер не отвечает. | kgs_forum | C# (си шарп) | 1 | 20.08.2013 20:14 |
Thread и Queue: пересылка данных из потока в поток | fshlik | C# (си шарп) | 5 | 16.02.2013 13:27 |
Контролируемый Sleep потока. | Человек_Борща | Win Api | 10 | 26.09.2012 12:14 |