Асинхронный таймер

Zoron

Client
Регистрация
24.09.2014
Сообщения
145
Благодарностей
39
Баллы
28
Всем привет!

Кто подскажет как можно реализовать асинхронный таймер?
Нужно, чтобы опред. таска работала строго определенное время и по ее завершению было сообщение о завершении.
Буду благодарен за любые советы )
 

Burklive

Client
Регистрация
10.05.2017
Сообщения
123
Благодарностей
33
Баллы
28
можно брать текущее время
C#:
return DateTime.Now.ToString("hh-mm-ss");
и сравнивать с временем нужного тебе для завершение цикла, если совпало или больше завершать
 

Zoron

Client
Регистрация
24.09.2014
Сообщения
145
Благодарностей
39
Баллы
28
нет, не подходит, нужно прям до секунды чтобы закончило, а так если идет допустим загрузка сайта, то сравнение произойдет после загрузки.
 

Burklive

Client
Регистрация
10.05.2017
Сообщения
123
Благодарностей
33
Баллы
28
можно сделать проект с таймером, который будет запускать bat для отключения другого проекта, переключи на запросы проект с таймером, тогда посекундно точно будет выполнятся или задержку в 1 сек поставь
83489
 

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 720
Баллы
113
нет, не подходит, нужно прям до секунды чтобы закончило, а так если идет допустим загрузка сайта, то сравнение произойдет после загрузки.
какая то утопия. есть процессы которые не получится прервать с точностью до секунды . особенно чужие, особенно зенковские.
в любом случае это не таймер нужен, а парралельный метод который имеет цикл работы максимум в секунду и который контролит свое выполнение, внутренний таймер и внешние прерывания.
 

Burklive

Client
Регистрация
10.05.2017
Сообщения
123
Благодарностей
33
Баллы
28
какая то утопия. есть процессы которые не получится прервать с точностью до секунды . особенно чужие, особенно зенковские.
в любом случае это не таймер нужен, а парралельный метод который имеет цикл работы максимум в секунду и который контролит свое выполнение, внутренний таймер и внешние прерывания.
интересно как это можно выполнить в программе у которой закрытый исходный код, написать свою? по факту предлагаешь экстренно выключать машину в необходимое время (лучше из розетки), а так это просто невозможно. Ну возможно я незнаю нюансы зеннопостера. А так человеку остается только завершать процесс вместе со всеми потоками через диспетчер или проект через батник.
 
  • Спасибо
Реакции: promusik

promusik

Client
Регистрация
05.02.2021
Сообщения
57
Благодарностей
16
Баллы
8
нет, не подходит, нужно прям до секунды чтобы закончило, а так если идет допустим загрузка сайта, то сравнение произойдет после загрузки.
Ссудя по вашему ТЗ, Зенкой никак. Только глушить Зену извне и то там возможна инерция из-за загруженности железа и тупой ОС. Из розетки - самый лучший вариант пожалуй, возможно с применением автоматической управляемой розетки. Поэтому Reset и называют "холодной перезагрузкой" - рубанул и всё. Все остальные программные методы будут вызывать инерцию.
 

Zoron

Client
Регистрация
24.09.2014
Сообщения
145
Благодарностей
39
Баллы
28
какая то утопия. есть процессы которые не получится прервать с точностью до секунды . особенно чужие, особенно зенковские.
в любом случае это не таймер нужен, а парралельный метод который имеет цикл работы максимум в секунду и который контролит свое выполнение, внутренний таймер и внешние прерывания.
Да такой и хотел, запускается асинхронный процесс с таймером, который запускает нужную процедуру и с интервалом в одну секунду проверяет и в нужный момент завершает. Такие методы есть в C#, но готового решения не нашел, к сожалению, пока.
В целом можно даже не до секунды ну хотя бы 2-3 секунды, сделать сверку не очень вариант, т.к .нужно везде натыкивать проверки...
 

Zoron

Client
Регистрация
24.09.2014
Сообщения
145
Благодарностей
39
Баллы
28

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 720
Баллы
113
интересно как это можно выполнить в программе у которой закрытый исходный код, написать свою? по факту предлагаешь экстренно выключать машину в необходимое время (лучше из розетки), а так это просто невозможно. Ну возможно я незнаю нюансы зеннопостера. А так человеку остается только завершать процесс вместе со всеми потоками через диспетчер или проект через батник.
я ничего не предлагаю. Про ребут это что то навыдумывали. В каком месте было озвучено про закрытие зенки, я тоже не уловил.
Челу надо какую то задачу делать в параллельном потоке. с чеком времени выполнения. не больше.
 

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 720
Баллы
113
вот же первый ответ. https://zennolab.com/discussion/threads/asinxronnyj-tajmer.96351/post-644145
делаешь в таске цикл, в цикле чекаешь время прошедшее с момента запуска таски. не забудь опрос CancellationToken сделать и для большей уверенности прерывания таски, можно опрашивать какую нибудь переменную зенки.
таску создаешь в общем коде, прокидываешь туда инстанс и проджект, из кубика c# запускаешь.
если ничего сверхсложного не задумано в таске, то будет работать.
 

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 720
Баллы
113
вот я сделал отдельный класс в общем коде, специально для таких дел.
83491

в кубике c# создал объект этого класса
83492

запустил таски. правда я для цикла все создал. но ничто не мешает создать свой пул тасок.

83493

на METANIT.COM неплохо так расписано как работать с тасками. но есть и другие мануалы. я поиском в гугле находил.
 
  • Спасибо
Реакции: Zoron

Zoron

Client
Регистрация
24.09.2014
Сообщения
145
Благодарностей
39
Баллы
28
вот я сделал отдельный класс в общем коде, специально для таких дел.
Посмотреть вложение 83491

в кубике c# создал объект этого класса
Посмотреть вложение 83492

запустил таски. правда я для цикла все создал. но ничто не мешает создать свой пул тасок.

Посмотреть вложение 83493

на METANIT.COM неплохо так расписано как работать с тасками. но есть и другие мануалы. я поиском в гугле находил.
Хорошо, спасибо, попробую разобраться )
 

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)