在c#中设置方法之间的延迟

时间:2014-01-23 01:39:28

标签: c# delay

我正在尝试运行四种方法,但在每次运行方法之间,我希望程序等待一秒钟。这是代码,我真的不知道如何去做,谢谢你提前!

private void go_Click(object sender, EventArgs e)
{

    {
        while (GlobalVar.Direction == "down")
        { movedown();}
        while (GlobalVar.Direction == "up")
        {moveup();}
        while (GlobalVar.Direction == "right")
        {moveright();}
        while (GlobalVar.Direction == "left")
        {moveleft();}
    }
}

3 个答案:

答案 0 :(得分:5)

制作方法async并使用await Task.Delay(1000)

像这样:

private async void go_Click(object sender, EventArgs e)
{

    {
        while (GlobalVar.Direction == "down")
        {  
           await Task.Delay(1000); 
           movedown();
        }
        ...
    }
}

答案 1 :(得分:0)

要引入延迟一秒,请使用以下调用:

System.Threading.Thread.Sleep(1000);

“1000”表示1000毫秒或1秒。

答案 2 :(得分:0)

如果您不想(或不能)使用async,您可以将您的方法添加到“脚本”,并让计时器一步一步地完成。即使用Queue代码看起来类似于以下(未经测试的)代码:

var script = new Queue<Action>();
script.Enqueue( movedown);
script.Enqueue( moveup);

var timer = new Timer(1000);
timer.Elapsed += (s,e)=> 
  {
    if (script.Count > 0)
    {
       script.Dequeue()();
    }
    else 
    {
       timer.Enabled = false; 
    } 
  };
timer.Enabled = true;