Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/284.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在c语言中设置方法之间的延迟#_C#_Delay - Fatal编程技术网

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

C# 在c语言中设置方法之间的延迟#,c#,delay,C#,Delay,我尝试运行四个方法,但每次运行一个方法之间,我希望程序等待一秒钟。这是代码,我真的不知道该怎么做,提前谢谢 private void go_Click(object sender, EventArgs e) { { while (GlobalVar.Direction == "down") { movedown();} while (GlobalVar.Direction == "up") {moveup();}

我尝试运行四个方法,但每次运行一个方法之间,我希望程序等待一秒钟。这是代码,我真的不知道该怎么做,提前谢谢

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();}
    }
}

使您的方法
异步
并使用
等待任务。延迟(1000)

像这样:

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

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

使您的方法
异步
并使用
等待任务。延迟(1000)

像这样:

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

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

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

System.Threading.Thread.Sleep(1000);

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

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

System.Threading.Thread.Sleep(1000);
“1000”表示1000毫秒或1秒。

如果您不想(或不能)使用
async
,您可以将您的方法添加到“脚本”中,并让计时器一次拾取一个步骤。也就是说,使用代码看起来类似于以下(未测试)代码:

var脚本=新队列();
script.Enqueue(movedown);
script.Enqueue(moveup);
var定时器=新定时器(1000);
计时器运行时间+=(s,e)=>
{
如果(script.Count>0)
{
script.Dequeue();
}
其他的
{
timer.Enabled=false;
} 
};
timer.Enabled=true;
如果您不想(或不能)使用
async
,您可以将您的方法添加到“脚本”中,并让计时器一次执行一个步骤。也就是说,使用代码看起来类似于以下(未测试)代码:

var脚本=新队列();
script.Enqueue(movedown);
script.Enqueue(moveup);
var定时器=新定时器(1000);
计时器运行时间+=(s,e)=>
{
如果(script.Count>0)
{
script.Dequeue();
}
其他的
{
timer.Enabled=false;
} 
};
timer.Enabled=true;

整个应用程序应该在延迟期间挂起还是什么?整个应用程序应该在延迟期间挂起还是什么?+1需要.Net 4.5,但对于任何新项目都可以。这非常有效。谢谢,你能解释一下什么是“异步”吗?@LucasHolmes你可以阅读文档:@LucasHolmes,基本上,您的方法是异步运行的,因此您的窗口不会冻结。使用wait,它不会转到下一行,等待一秒钟(1000毫秒),然后调用您的movedown方法+1需要.Net 4.5,但对于任何新项目都可以。这非常有效,谢谢,你能解释一下什么是“异步”吗?@LucasHolmes你可以阅读文档:@LucasHolmes,基本上你的方法是异步运行的,因此你的窗口不会冻结。使用wait,它不会转到下一行,等待一秒钟(1000毫秒),然后调用你的movedown方法