我知道线程将在分配完所有代码完成后终止,但是如何才能使它保持等待事件?以下是我的代码的简单介绍,以便您更好地了解我的问题:
public static class TimeUpdater
{
static TimeUpdater()
{
//Initialize the Timer object
timer = new Timer();
timer.Interval = 1000;
timer.Tick += timer_Tick;
}
public static void StartTimer()
{
timer.Start();
}
private static void timer_Tick(object sender, EventArgs e)
{
//Do something
}
}
从主线程开始,以下是我调用这些方法的方法:
Thread timeThread = new Thread(TimeUpdater.StartTimer);
timeThread.Name = "Time Updater";
timeThread.Start();
这样做是因为它进入StartTimer()
方法,运行它,然后线程终止而不进入timer_Tick
事件处理程序。如果我从主线程中调用StartTimer()
它可以正常工作。
任何人都可以发现问题吗?欢呼声。
答案 0 :(得分:1)
您正在单独的线程上启动计时器。启动计时器是一种非常快速的操作。这就是你的线程立即完成的原因。当时间到期时,将在线程池上异步启动Tick事件。
如果你想要一个线程等待某事,那么你应该在线程过程中插入代码来等待某事。目前你不等任何事情。
如果要运行计时器程序,只需调用它即可。
答案 1 :(得分:1)
显然我不需要使用Timer
对象。以下是我的工作方式:
public static void StartTimer()
{
while (true)
{
UpdateTime();
Thread.Sleep(1000);
}
}
感谢帮助人员!
答案 2 :(得分:0)
在StartTimer
方法中,您可以围绕无限循环旋转并调用Thread.Sleep
以在需要时延迟执行。我看到你已经想到了这一点。另一个想法是使用计时器,但不是从工作线程启动它而是从主线程启动它。你真的不需要在这里手动创建线程。