Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.02.2017, 16:18   #31
OmegaBerkut
Спокойный псих
Участник клуба
 
Аватар для OmegaBerkut
 
Регистрация: 19.03.2013
Сообщений: 1,538
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
я пишу для себя, потому буду писать говно-код
Кто сказал говнокод ? Я учусь, и свой "говно"-код пишу из личного интереса.
Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
ибо вы принципиально отрицаете хорошие решения
Принципиально ? Нет ... Я же не стал писать свой Imap ... моя тема.
Отрицание ? Опять же - нет; пишу "говно"-код, для себя.
Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
проблема в том что вы запомните свое решение в итоге, куча таких "запомнил" и работа в фирме станет невозможна
Работа в фирме - это совсем уж другое ... Сейчас, фактически, я фрилансер, пишу курсовые-дипломные на заказ ... И да - там я не занимаюсь говнокодингом, ибо там уже важно время. А при работе в фирме (как я пнимаю) важно договариваться, ибо коллектив.
Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
про ваш рестарт вообще отдельная тема, это неприемлимо для нормального приложения(без критичной на то причины), будете писать некий сервер, тоже рестартить будете чуть что?(с потерей коннектов причем)
"Критическая" причина - лень писать целую функцию, которая будет убивать имеющиеся потоки, и восстанавливать данные В ИСХОДНОЕ СОСТОЯНИЕ ... Не напоминает перезапуск ?
К тому же, если говорить по хорошему - убивать потоки абортом нехорошо, а это значит - нужно ещё и потоки допиливать.
Тем более не стоит сравнивать сервер с программой, в которой (программе) нет никаких коннектов.

За таймеры спасибо.
Подпись ? Не, не слышал ...
OmegaBerkut вне форума Ответить с цитированием
Старый 03.02.2017, 17:37   #32
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Цитата:
Сообщение от OmegaBerkut Посмотреть сообщение
Я учусь
Так как учитесь-то если вам подсказывают как правильнее сделать, а вы не делаете?
Или чему вы учитесь?


Цитата:
Сообщение от OmegaBerkut Посмотреть сообщение
которая будет убивать имеющиеся потоки, и восстанавливать данные В ИСХОДНОЕ СОСТОЯНИЕ
Не надо убивать, надо отправлять потоку сигнал о том, что надо завершиться.
Я ж показывал пример http://www.programmersforum.ru/showt...=2#post1661912

А восстановление после выполнения работы тоже не нужно что ли?
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 03.02.2017, 18:22   #33
OmegaBerkut
Спокойный псих
Участник клуба
 
Аватар для OmegaBerkut
 
Регистрация: 19.03.2013
Сообщений: 1,538
По умолчанию

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
А восстановление после выполнения работы тоже не нужно что ли?
После выполненной работы поток просто завершается выходом из функции, ничего лишнего. Сброс запуска потока до завершения обратного отсчёта подразумевает полный сброс данных, ИЛИ допиливание потока таким образом, что бы этот поток мог понять, что обратный отсчёт не завершён, произошла пользовательская отмена ... А мне лень это делать, ибо от перезапуска никто и ничего не пострадает.
Цитата:
Сообщение от Alex11223 Посмотреть сообщение
Так как учитесь-то если вам подсказывают как правильнее сделать, а вы не делаете?
Или чему вы учитесь?
Учусь всему, что похоже на программирование, включая даже то, "как нельзя делать".
Подпись ? Не, не слышал ...

Последний раз редактировалось OmegaBerkut; 03.02.2017 в 18:25.
OmegaBerkut вне форума Ответить с цитированием
Старый 03.02.2017, 18:45   #34
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Не надо поток "сбрасывать", надо просто завершиться ему, что делается примерно 3 строчками:

Код:
            var cts = new CancellationTokenSource();
            var cancellationToken = cts.Token;
            ........

                    if (cancellationToken.IsCancellationRequested) // или cancellationToken.ThrowIfCancellationRequested();
                    {
                        return;
                    }
Про сброс я имел в виду сброс UI в исходное состояние.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 04.02.2017, 09:43   #35
OmegaBerkut
Спокойный псих
Участник клуба
 
Аватар для OmegaBerkut
 
Регистрация: 19.03.2013
Сообщений: 1,538
По умолчанию

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
надо просто завершиться ему, что делается примерно 3 строчками
У меня форма обратного отсчёта для этого требует введение дополнительного флага "отмена пользователя", и к основному потоку ещё нужно прикрутить проверку этого флага; и выполнение безоговорочного return на true ... Но, перед этим return нужно ещё занулить все имеющиеся ссылки. А мне лень это делать.
Подпись ? Не, не слышал ...
OmegaBerkut вне форума Ответить с цитированием
Старый 04.02.2017, 12:01   #36
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Какого флага? И как связаны флаг и форма?

CancellationToken это и есть флаг. Надо просто вызвать Cancel() на CancellationTokenSource.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 04.02.2017, 13:23   #37
OmegaBerkut
Спокойный псих
Участник клуба
 
Аватар для OmegaBerkut
 
Регистрация: 19.03.2013
Сообщений: 1,538
По умолчанию

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
Какого флага? И как связаны флаг и форма?
Флаг - это типа можно завести любое условие, при разрешении которого выполняются определённые инструкции. Самый простой флаг - bool user_cancel; в моём случае.
Флаг с формой может быть связан очень просто - public bool user_cansel; и доступ к этому флагу извне по ссылке на форму обратного отсчёта.
Подпись ? Не, не слышал ...

Последний раз редактировалось OmegaBerkut; 04.02.2017 в 13:50.
OmegaBerkut вне форума Ответить с цитированием
Старый 04.02.2017, 14:02   #38
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Чот это сложно, а не просто
Куда-то передавать ссылки аж на всю форму, что-то делать с ее полями.

Проще когда UI изолирован от основной логики, как в моем примере: просто функция, которая принимает время и callback (ссылка на функцию, которая вызовется в конце). И возвращает объект, на котором можно вызвать Cancel() для досрочного завершения.


Цитата:
Сообщение от OmegaBerkut Посмотреть сообщение
bool user_cansel
Вообще флаги типа 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.
Alex11223 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Аналог 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