gpt4 book ai didi

c# - c#中For循环的时间延迟

转载 作者:可可西里 更新时间:2023-11-01 08:13:51 26 4
gpt4 key购买 nike

我如何在一定的旋转后在循环中使用时间延迟?假设:

for(int i = 0 ; i<64;i++)
{
........
}

我希望每 8 次旋转后延迟 1 秒。

最佳答案

有很多方法可以做到这一点:

  • 方法一:极其糟糕:忙等待:

    DateTime timeToStartUpAgain = whatever;

    while(DateTime.Now < timeToStartUpAgain) {}

这是一件可怕的事情;操作系统会假设你正在做有用的工作,并会分配一个 CPU 来做除了旋转之外的任何事情。永远不要这样做,除非您知道自旋只会持续几微秒。基本上,当您这样做时,您已经雇用了某人为您看表;那不经济。

  • 方法二:非常糟糕:休眠线程。

让线程休眠也是一件可怕的事情,但没有让 CPU 变热那么可怕。休眠一个线程告诉操作系统“这个应用程序的这个线程应该暂时停止响应事件并且什么都不做”。这比雇人帮你看表要好;现在你雇了一个人为你 sleep

  • 方法三:将工作分解成更小的任务。创建一个计时器。当你想要延迟时,不要做下一个任务,而是做一个计时器。当计时器触发其滴答事件时,从您停止的地方拾取任务列表。

这样可以有效地利用资源;现在你要雇人煮鸡蛋,当鸡蛋在煮的时候,他们可以 toast 。

然而,编写将工作分解为小任务的程序会很痛苦。

  • 方法四:利用C#5对异步编程的支持; 等待延迟任务并让 C# 编译器负责重组您的程序以使其高效。

缺点当然是 C# 5 目前仅处于测试阶段。

注意:从 Visual Studio 2012 开始,C# 5 正在使用中。如果您使用的是 VS 2012 或更高版本,则可以使用异步编程。

关于c# - c#中For循环的时间延迟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9946782/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com