Этот таймер срабатывает, как и ожидалось, когда он установлен на 3 секунды, 10 секунд, 60 секунд, 10 минут, 20 минут, но перестает работать при установке на 30 минут.Это просто простое приложение, которое всплывает на моем экране, чтобы напомнить мне о выполнении различных задач.Вместо этого я видел сообщения об использовании системных таймеров, потокового таймера и форм-таймера.Но так как это конкретное приложение предназначено для взаимодействия с пользовательским интерфейсом, я подумал, что Forms Timer - это путь.Кроме того, код, кажется, прекрасно работает в течение менее 30 минут.
using System;
using System.Windows.Forms;
namespace WindowsFormsApp1
{
public partial class Form1 : Form
{
static int thirtyMins = 30 * 60 * 1000;
static int runTime = thirtyMins;
static int minTotal = 0;
public Form1()
{
InitializeComponent();
}
public void updateLabels()
{
label1.Text = "shown " + DateTime.Now.ToString("h:mm:ss tt");
label2.Text = runTime / 1000 + " sec";
label3.Text = "hidden " + minTotal;
}
private void Form1_Load(object sender, EventArgs e)
{
timer1.Interval = thirtyMins * 1000;
timer1.Enabled = true;
updateLabels();
Console.WriteLine(DateTime.Now.ToString("h:mm:ss tt") + " Loaded!!");
}
private void timer1_Tick(object sender, EventArgs e)
{
updateLabels();
this.WindowState = FormWindowState.Normal;
this.Activate();
this.Update();
Console.WriteLine(DateTime.Now.ToString("h:mm:ss tt") + " Tick!!");
}
private void textBox1_TextChanged(object sender, EventArgs e)
{
try
{
if (textBox1.Text.Contains("*"))
{
int sec = 1;
String[] split = textBox1.Text.Split('*');
foreach (string s in split)
{
sec *= Int32.Parse(s.Trim());
}
runTime = sec * 1000;
}
else
{
runTime = Int32.Parse(textBox1.Text.Trim()) * 1000;
}
timer1.Interval = runTime;
updateLabels();
}
catch
{
timer1.Interval = thirtyMins;
}
}
private void Form1_Resize(object sender, EventArgs e)
{
if (WindowState == FormWindowState.Minimized)
{
minTotal++;
updateLabels();
}
}
}
}