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

  • Автор темы Автор темы Zoron
  • Дата начала Дата начала

Zoron

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

Кто подскажет как можно реализовать асинхронный таймер?
Нужно, чтобы опред. таска работала строго определенное время и по ее завершению было сообщение о завершении.
Буду благодарен за любые советы )
 
можно брать текущее время
C#:
Развернуть Свернуть Копировать
return DateTime.Now.ToString("hh-mm-ss");
и сравнивать с временем нужного тебе для завершение цикла, если совпало или больше завершать
 
нет, не подходит, нужно прям до секунды чтобы закончило, а так если идет допустим загрузка сайта, то сравнение произойдет после загрузки.
 
можно сделать проект с таймером, который будет запускать bat для отключения другого проекта, переключи на запросы проект с таймером, тогда посекундно точно будет выполнятся или задержку в 1 сек поставь
83489
 
нет, не подходит, нужно прям до секунды чтобы закончило, а так если идет допустим загрузка сайта, то сравнение произойдет после загрузки.
какая то утопия. есть процессы которые не получится прервать с точностью до секунды . особенно чужие, особенно зенковские.
в любом случае это не таймер нужен, а парралельный метод который имеет цикл работы максимум в секунду и который контролит свое выполнение, внутренний таймер и внешние прерывания.
 
какая то утопия. есть процессы которые не получится прервать с точностью до секунды . особенно чужие, особенно зенковские.
в любом случае это не таймер нужен, а парралельный метод который имеет цикл работы максимум в секунду и который контролит свое выполнение, внутренний таймер и внешние прерывания.
интересно как это можно выполнить в программе у которой закрытый исходный код, написать свою? по факту предлагаешь экстренно выключать машину в необходимое время (лучше из розетки), а так это просто невозможно. Ну возможно я незнаю нюансы зеннопостера. А так человеку остается только завершать процесс вместе со всеми потоками через диспетчер или проект через батник.
 
  • Спасибо
Реакции: promusik
нет, не подходит, нужно прям до секунды чтобы закончило, а так если идет допустим загрузка сайта, то сравнение произойдет после загрузки.
Ссудя по вашему ТЗ, Зенкой никак. Только глушить Зену извне и то там возможна инерция из-за загруженности железа и тупой ОС. Из розетки - самый лучший вариант пожалуй, возможно с применением автоматической управляемой розетки. Поэтому Reset и называют "холодной перезагрузкой" - рубанул и всё. Все остальные программные методы будут вызывать инерцию.
 
какая то утопия. есть процессы которые не получится прервать с точностью до секунды . особенно чужие, особенно зенковские.
в любом случае это не таймер нужен, а парралельный метод который имеет цикл работы максимум в секунду и который контролит свое выполнение, внутренний таймер и внешние прерывания.
Да такой и хотел, запускается асинхронный процесс с таймером, который запускает нужную процедуру и с интервалом в одну секунду проверяет и в нужный момент завершает. Такие методы есть в C#, но готового решения не нашел, к сожалению, пока.
В целом можно даже не до секунды ну хотя бы 2-3 секунды, сделать сверку не очень вариант, т.к .нужно везде натыкивать проверки...
 
интересно как это можно выполнить в программе у которой закрытый исходный код, написать свою? по факту предлагаешь экстренно выключать машину в необходимое время (лучше из розетки), а так это просто невозможно. Ну возможно я незнаю нюансы зеннопостера. А так человеку остается только завершать процесс вместе со всеми потоками через диспетчер или проект через батник.
я ничего не предлагаю. Про ребут это что то навыдумывали. В каком месте было озвучено про закрытие зенки, я тоже не уловил.
Челу надо какую то задачу делать в параллельном потоке. с чеком времени выполнения. не больше.
 
вот же первый ответ. https://zennolab.com/discussion/threads/asinxronnyj-tajmer.96351/post-644145
делаешь в таске цикл, в цикле чекаешь время прошедшее с момента запуска таски. не забудь опрос CancellationToken сделать и для большей уверенности прерывания таски, можно опрашивать какую нибудь переменную зенки.
таску создаешь в общем коде, прокидываешь туда инстанс и проджект, из кубика c# запускаешь.
если ничего сверхсложного не задумано в таске, то будет работать.
 
вот я сделал отдельный класс в общем коде, специально для таких дел.
83491

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

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

83493

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

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

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

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

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

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