计时器应用程序没有正常运行
本文关键字:正常运行 应用程序 计时器 | 更新日期: 2023-09-27 18:01:37
我正在编写一个非常简单的c#应用程序,其中程序计数15秒,并在15秒过去后立即输出"15"。虽然程序在最初的几次试验中运行良好,但它开始冻结。有人知道为什么吗?我该如何改进它?
public void timer()
{
time.Text = "restart";
int i = 0;
DateTime st1 = DateTime.Now;
String time1 = st1.Second.ToString();
int timef = Convert.ToInt32(time1);
int timef2;
while (i < 15)
{
DateTime st2 = DateTime.Now;
String time2 = st2.Second.ToString();
timef2 = Convert.ToInt32(time2);
i = timef2 - timef;
}
time.Text = i.ToString();
i = 0;
}
如果你知道确切的15秒,那就简单多了!!
Thread.Sleep(15000);
Console.WriteLine("15");
或者使用内置计时器:-
static void Main(string[] args)
{
System.Timers.Timer timer = new System.Timers.Timer(15000);
timer.Elapsed += new System.Timers.ElapsedEventHandler(T_Elapsed);
timer.Start();
var i = Console.ReadLine();
}
static void T_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{
Console.WriteLine("15");
var T = (Timer)sender;
T.Stop;
}
如果您希望应用程序在特定数量的time
之后执行某些操作,则需要使用Timer
System.Timers.Timer timer = new System.Timers.Timer();
timer.Interval = 15 * 1000;
timer.Elapsed += timer_Elapsed;
timer.Start();
int timerCount=0;
void timer_Elapsed(object sender, EventArgs e)
{
timerCount++;
int timeElapsed = timerCount * 15;
}
在您的情况下,您可以使用Stopwatch -类,是在系统。诊断名称空间:
public static void Count()
{
Stopwatch s = new Stopwatch();
int i = 0;
s.Start();
while (true)
{
if (s.ElapsedMilliseconds < i * 1000) { Thread.Sleep(10); continue; }
i += 15; Console.Write(i + " "); // or change i to 15 if you want the output to be '15' every time
}
}