1

现在我有

    if blocker then 
        Thread.Sleep(5000)
        do something

它在 while 循环中运行,所以我的整个应用程序都被冻结了。在主应用程序线程中做一些事情对我来说也很重要,所以这就是我不创建新线程的原因。

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

4

3 回答 3

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();
    }
于 2012-07-25T10:12:57.953 回答
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");  
}
于 2012-07-25T10:15:16.790 回答
0

您可以开设一个课程,您可以将问题传递给该课程。并通过线程调用它的方法。在该类中,您可以制作事件,因此当该类完成其工作时,它将引发一个事件,您的应用程序将知道该工作已完成。

于 2012-07-25T10:09:50.023 回答