防止线程结束

时间:2014-07-18 10:35:26

标签: c# multithreading

我知道线程将在分配完所有代码完成后终止,但是如何才能使它保持等待事件?以下是我的代码的简单介绍,以便您更好地了解我的问题:

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()它可以正常工作。

任何人都可以发现问题吗?欢呼声。

3 个答案:

答案 0 :(得分:1)

您正在单独的线程上启动计时器。启动计时器是一种非常快速的操作。这就是你的线程立即完成的原因。当时间到期时,将在线程池上异步启动Tick事件。

如果你想要一个线程等待某事,那么你应该在线程过程中插入代码来等待某事。目前你不等任何事情。

如果要运行计时器程序,只需调用它即可。

答案 1 :(得分:1)

显然我不需要使用Timer对象。以下是我的工作方式:

    public static void StartTimer()
    {
        while (true)
        {
            UpdateTime();
            Thread.Sleep(1000);
        }
    }

感谢帮助人员!

答案 2 :(得分:0)

StartTimer方法中,您可以围绕无限循环旋转并调用Thread.Sleep以在需要时延迟执行。我看到你已经想到了这一点。另一个想法是使用计时器,但不是从工作线程启动它而是从主线程启动它。你真的不需要在这里手动创建线程。