Остановка таймера при отображении диалога - 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();
}