Остановка таймера при отображении диалога - C#

Узнай цену своей работы

Формулировка задачи:

Добрый день. Подскажите, хочу написать свой таймер, который будет служить в качестве часов. При создании экземпляра окна создается сам таймер. Ниже приведу его код. Вопрос в том, если будет выведено диалоговое окно, то таймер остановится, или продолжит свою работу? Мне нужно, чтобы таймер останавливался при открытии диалогового окна, а при закрытии диалогового окна - продолжал работу.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
 
namespace Test
{
    public class Time
    {
        public static string Day
        {
            get
            {
                string rc = "";
 
                switch (d)
                {
                    case 0: rc = "Понедельник"; break;
                    case 1: rc = "Вторник"; break;
                    case 2: rc = "Среда"; break;
                    case 3: rc = "Четверг"; break;
                    case 4: rc = "Пятница"; break;
                    case 5: rc = "Суббота"; break;
                    case 6: rc = "Воскресенье"; break;
                }
                return rc;
            }
        }
 
        public static string Hours
        {
            get
            {
                string hours = Convert.ToString(h);
                if (hours.Length == 1) hours = hours.Insert(0, "0");
                return hours;
            }
        }
 
        public static string Minutes
        {
            get
            {
                string minutes = Convert.ToString(m);
                if (minutes.Length == 1) minutes = minutes.Insert(0, "0");
                return minutes;
            }
        }
 
        static short d; // day [0;7)
        static short h; // hours    [0,24)
        static short m; // minutes  [0,60)
        static Timer timer = new Timer();
 
        public Time()
        {
            h = 0;
            m = 0;
 
            timer.Interval = 100;
            timer.Tick += Timer_Tick;
            timer.Start();
        }
 
        private static void Timer_Tick(object sender, EventArgs e)
        {
            if (++m == 60)
            {
                m = 0;
                if (++h == 24)
                {
                    h = 0;
                    if (++d == 7) d = 0;
                }
            }
        }
 
        public static void Stop() => timer.Stop();
        public static void Start() => timer.Start();
 
        public static string GetDay() => Day;
        public static string GetHours() => Hours;
        public static string GetMinutes() => Minutes;
 
        public static string GetTime() => ($"{Hours}:{Minutes}");
        public override string ToString() => (Day + ", " + GetTime());
    }
}

Решение задачи: «Остановка таймера при отображении диалога»

textual
Листинг программы
        void StopTimerAndShowForm(Form form)
        {
            tm.Stop();
            form.ShowDialog(this);
            tm.Start();
        }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 3.846 из 5
Похожие ответы