现在我有
if blocker then
Thread.Sleep(5000)
do something
它在 while 循环中运行,所以我的整个应用程序都被冻结了。在主应用程序线程中做一些事情对我来说也很重要,所以这就是我不创建新线程的原因。
我认为我需要创建临时计时器,添加经过的事件,处理它然后做一些事情,但我只想知道是否有一些简单的解决方案,我不需要“重新发明自行车”?
我会做这样的事情:
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();
}
您不必重新发明轮子:
// 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");
}
您可以开设一个课程,您可以将问题传递给该课程。并通过线程调用它的方法。在该类中,您可以制作事件,因此当该类完成其工作时,它将引发一个事件,您的应用程序将知道该工作已完成。