有没有应用程序冻结等待(一段时间)的简单方法?

时间:2012-07-25 10:02:37

标签: .net timer

现在我已经

    if blocker then 
        Thread.Sleep(5000)
        do something

它在while圈子中运行,所以我的整个应用程序正在冻结。对我来说,在主应用程序线程中执行某些操作也很重要,这就是我不创建新内容的原因。

我认为我需要创建临时Timer,添加已发生的事件,处理它然后做一些事情,但我只是想知道是否有一些简单的解决方案,我不需要“重新发明一个自行车“?

3 个答案:

答案 0 :(得分:2)

我会做这样的事情:

    private static Timer _timer;

    static void Main(string[] args)
    {
        _timer = new Timer();
        _timer.Elapsed += TimeEvent;
        _timer.Interval = 5000; 
        _timer.Start(); 

        while (Console.Read() != 'q')
        {
            ;     
        }
    }

    public static void TimeEvent(object source, ElapsedEventArgs e)
    {
        Console.Write("Time event!");
        _timer.Stop();
    }

答案 1 :(得分:1)

你不必重新发明轮子:

// create a timer that waits 10 seconds and start it
Timer timer = new Timer(10 * 1000);
timer.Elapsed += this.TimerElapsed;
timer.Start(); 

public void TimerElapsed(object o, ElapsedEventArgs args)
{
    MessageBox.Show("Timer has elapsed");  
}

答案 2 :(得分:0)

您可以创建一个可以传递问题的课程。并通过一个线程调用它的方法。 并且在该课程中你可以制作活动,所以当课程结束时,它会引发一个事件,你的应用程序就会知道这项工作已经完成。