Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.73/11: Рейтинг темы: голосов - 11, средняя оценка - 4.73
0 / 0 / 0
Регистрация: 05.07.2021
Сообщений: 9
.NET 4.x

Как сделать вывод заданого таймера через консоль?

21.07.2021, 16:46. Показов 2296. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Задание по теме события:

Создать класс TickerTimer содержащий методы StartTimer, StopTimer, событие TickEvent, генерируемый через определенный промежуток времени который задается свойством Interval(свойство класcа) в виде миллисекунд. Продемонстрировать работу класса TickerTimer с выводом на консоль. Запуск и остановка таймера задается через консоль(имеется ввиду что-бы задавали интервал сами).

Сам таймер использовать нельзя

Плюс при нажатие клавиши Esc оно завершало Ticker, а при нажатие Space
Нашел примерно такой ответ, но не знаю как реализовать
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
//поставить в метод, который реагирует на ивент, такую ​​штуку:
 
if (Console.KeyAvailable)
            {
                ConsoleKeyInfo pressedKey = Console.ReadKey(true);
                {
                    if (pressedKey.Key == ConsoleKey.Esc) { exit = true; stop = true; }
                    if (pressedKey.Key == ConsoleKey.Space) stop = true;
                }
                // Очистить буфер при нажатии на клавишу
                while (Console.KeyAvailable) Console.ReadKey(true);
            }
//тогда он будет реагировать только на клавишу нажатой, пока поток спит

Мой код
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Threading;
 
namespace Timer
{
    public delegate void TickEventHandler(string msg);
 
 
    public class Ticker
    {
        public event TickEventHandler TickEvent;
        public int ticks = 0;
        public int intervals = 1000;
        private bool isEnabled = false;
 
        public bool IsEnabled
        {
            get { return isEnabled; }
            set { isEnabled = value; }
        }
        public void StartTimer()//должны  быть использованые методы
        {
            while (isEnabled && TickEvent != null)
            {
                ticks++;
                TickEvent(ticks.ToString());
                Thread.Sleep(intervals);
            }
        } 
        public void StopTimer()
        {
            //должны  быть использованые методы
        }
    }
    class Program
    {
 
        static void Main(string[] args)
        {
            Console.WriteLine("Введите интервал");//
            int interval = int.Parse(Console.ReadLine());//
 
            Ticker ticker = new Ticker();
            ticker.TickEvent += new TickEventHandler(ticker_TickEvent);
            ticker.IsEnabled = true;//так приложение включается
            //смысл в том чтобы это было использовано в StartTimer() методе при нажатии клавиши
            Thread thr = new Thread(new System.Threading.ThreadStart(ticker.StartTimer));
            thr.Start();
            Thread.Sleep(interval);
            ticker.IsEnabled = false;//а так по истечении интервала заканчивается
            //смысл в том чтобы это было использовано в StopTimer() методе при нажатии клавиши
            Console.ReadLine();
        }
        static void ticker_TickEvent(string msg)//событие тик ивент
        {
            Console.WriteLine("Вывод сообщения {0:HH:mm:ss.ff} ", DateTime.Now.ToLongTimeString() + " Тик номер:" + msg );
         
        }
    }
}
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
21.07.2021, 16:46
Ответы с готовыми решениями:

как сделать вывод таймера на 2ю форму?
Вот таймер на одной форме , как сделать чтобы по нажатию batton таймер запускался на 2 й форме #include <vcl.h> #pragma...

Не получается реализация таймера через консоль
Добрый день, господа! Не могу понять суть проблемы. Хочу освоить использование таймера в простом консольном приложении. Вот...

Переход в режим сна или гибернации через консоль с использованием таймера
Вопрос заключается в названии темы. Рылся в интернете, нашел лишь сон с таймером, а гибернации нет. Единственное информативное я вычитал,...

5
Эксперт JavaЭксперт по электроникеЭксперт .NET
 Аватар для wizard41
3430 / 2749 / 575
Регистрация: 04.09.2018
Сообщений: 8,633
Записей в блоге: 3
21.07.2021, 18:41
Ниче не понятно. Таймер своими руками?
0
0 / 0 / 0
Регистрация: 05.07.2021
Сообщений: 9
21.07.2021, 20:22  [ТС]
Верно, какими же ещё) Нельзя использовать сам таймер, который есть стандартным в с#
0
Эксперт JavaЭксперт по электроникеЭксперт .NET
 Аватар для wizard41
3430 / 2749 / 575
Регистрация: 04.09.2018
Сообщений: 8,633
Записей в блоге: 3
22.07.2021, 10:39
Лучший ответ Сообщение было отмечено toxics как решение

Решение

class Ticker
Кликните здесь для просмотра всего текста
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
public class Ticker
    {
        public event TickEventHandler TickEvent;
        public int interval { get; set; }
        private int ticks { get; set; }
        public bool isEnabled { get; set; }
 
        public void StartTimer()
        {
            while ( isEnabled )
            {
                Thread.Sleep( interval );
                ticks++;
                TickEvent( ticks.ToString() );
            }       
        }
 
 
        public void StopTimer()
        {
            isEnabled = false;
            ticks = 0;
        }
 
    }

class Program
Кликните здесь для просмотра всего текста
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
class Program
    {
        
        static void Main( string[] args )
        {
            Ticker t = new Ticker();
            Console.Write( "Введите интервал: " );
            int.TryParse( Console.ReadLine(), out int n );
            t.interval = n;
            Thread thr = new Thread( new ThreadStart( t.StartTimer ) );
 
 
            while ( true )
            {
                var key = Console.ReadKey();
 
                if ( key.Key == ConsoleKey.Spacebar )
                {
                    Console.WriteLine( "Таймер запущен!" );
                    t.isEnabled = true;
                    t.TickEvent += new TickEventHandler( ticker_TickEvent );
                    thr = new Thread( new ThreadStart( t.StartTimer ) );
                    thr.Start();
                }
 
 
                if ( key.Key == ConsoleKey.Escape )
                {
                    Console.WriteLine( "Таймер остановлен!" );
                    t.StopTimer();
                    t.TickEvent -= new TickEventHandler( ticker_TickEvent );
                    thr.Abort();
                }
            }
        }
 
 
 
 
        static void ticker_TickEvent( string msg )
        {
            Console.WriteLine( "Вывод сообщения {0:HH:mm:ss.ff} ", DateTime.Now.ToLongTimeString() + " Тик номер:" + msg );
        }   
    }

SpaseBar - запустить таймер
Esc - остановить
Миниатюры
Как сделать вывод заданого таймера через консоль?  
1
Эксперт JavaЭксперт по электроникеЭксперт .NET
 Аватар для wizard41
3430 / 2749 / 575
Регистрация: 04.09.2018
Сообщений: 8,633
Записей в блоге: 3
22.07.2021, 10:40
и делегат не забываем:
C#
1
public delegate void TickEventHandler( string msg );
1
0 / 0 / 0
Регистрация: 05.07.2021
Сообщений: 9
22.07.2021, 11:14  [ТС]
Благодарю, вас за проделанную работу, вроде как всё очевидно просто, но неопытность играет большую роль.
Спасибо)) Будем учить дальше
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
22.07.2021, 11:14
Помогаю со студенческими работами здесь

Как сделать вывод в консоль
count << "GOLD MEMBER из голландии парень крутой,Голд Мембер Член Золотой";

Как сделать понятный вывод в консоль?
using (var request = new HttpRequest()) { friendsId1 =...

Как сделать вывод на консоль строки из БД
Всем привет. Разбираюсь с работой с БД... Получилось подключить БД Эксеса к С#. Но как мне например сделать вывод на консоль строки из БД? ...

Скрипт таймера обратного отсчета, как сделать повторение через каждые 48 часов?
есть скрипт таймера обратного отсчета, как сделать повторение через каждые 48 часов? function time() { today = new Date(); ...

Как сделать вывод результатов скрипта в консоль Windows?
Добрый день. Пайчарм профешнл. Как сделать вывод результатов скрипта в консоль винды, а не самого пайчарма? Благодарю


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита, которое может. . .
Команды "Заполнить" и "Очистить" на форме документа
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". На примере нетипового документа разработанного в конфигурации КА2. В качестве источника данных указан регистр накопления, в который записываются данные о. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-text-sdl3-c. zip finish-text-sdl3-cpp. zip
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru