[英]How to use a timer to see how long an equation takes in C#
在我的程序中,我试图查看计算一定数量的素数需要多长时间
double time;
private void button1_Click(object sender, EventArgs e)
{
bool isPrime = true;
timer1.Start();
for (int i = 2; i <= 200000; i++)
{
for (int j = 2; j <= 200000; j++)
{
if (i != j && i % j == 0)
{
isPrime = false;
break;
}
}
if (isPrime)
{
//listBox1.Items.Add(i);
}
isPrime = true;
}
timer1.Stop();
MessageBox.Show(time.ToString() + "ms");
}
private void timer1_Tick(object sender, EventArgs e)
{
time += 0.001; ;
}
但是,当程序完成计算时,消息框将时间显示为零。 我使用秒表类测试了该程序并且该程序有效,但是我想知道有没有办法改用计时器?
谢谢!
如果这纯粹是学术性的:
myTimer.Interval = 1;
myTimer.Elapsed += IncrementEvent;
您可以执行上述操作以在每个增量上触发一个事件。
导致事件每~1ms 触发一次。
public int incrementCounter {get; set; }
public void IncrementEvent()
{
incrementCounter++;
}
我也相信您需要将其连接起来以进行多线程处理。 (我不记得我上次使用计时器是什么时候,而且从来没有在一个需要考虑锁定的紧密循环中。
然后显然在您的消息框中使用该值:
MessageBox.Show(incrementCounter.ToString() + "ms");
但是,我认为永远不要在生产中使用这样的东西。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.