I am new to C#, and I have searched I but didn't find a simple solution to my problem. I am creating a Windows form application. After the start button is clicked, it counts every millisecond and when it reaches specific values from an array changes a label. How can milliseconds be counted?
AlekZanDer Code:
namespace timer_simple3
{
public partial class Form1 : Form
{
long result = 0;
public Form1()
{
InitializeComponent();
this.timer1 = new System.Windows.Forms.Timer(this.components);
}
private void Form1_Load(object sender, EventArgs e)
{
this.timer1.Tick += new System.EventHandler(this.timer1_Tick);
}
private void timer1_Tick(object sender, EventArgs e)
{
result = result + 1;
label1.Text = Convert.ToString(result);
}
private void btstart_Click(object sender, EventArgs e)
{
timer1.Interval = 1; //you can also set this in the
//properties tab
timer1.Enabled = true;
timer1.Start();
// label1.Text = Convert.ToString(timer1);
}
private void btstop_Click(object sender, EventArgs e)
{
timer1.Stop();
}
}
}
How can milliseconds be counted?
You can't do that, because Windows Forms Timer component is single-threaded, and is limited to an accuracy of 55 milliseconds. If you require a multithreaded timer with greater accuracy, use the Timer class in the System.Timers namespace.
Also any other timer will not give you accuracy more than 16 milliseconds (actually 15.625 milliseconds, or 64Hz). So, you can't increment some counter to count elapsed milliseconds.
Option for you - instead of long result
counter use difference between current time and time of timer start:
label1.Text = (DateTime.Now - startDateTime).Milliseconds.ToString();