如何在一定的旋转后在循环中使用时间延迟?假设:
for(int i = 0 ; i<64;i++)
{
........
}
Run Code Online (Sandbox Code Playgroud)
我希望在每8次旋转后延迟1秒.
Eri*_*ert 41
有很多方法可以做到这一点:
方法一:犯罪可怕:忙碌等待:
DateTime timeToStartUpAgain = whatever;
while(DateTime.Now < timeToStartUpAgain) {}
这是一件可怕的事情; 操作系统将假设您正在做有用的工作,并将指定一个CPU除了旋转之外什么都不做.除非你知道旋转只会持续几微秒,否则永远不要这样做.基本上当你这样做时,你雇了一个人为你看时钟; 这不经济.
睡觉线程也是一件可怕的事情,但不如加热CPU那么可怕.睡眠线程告诉操作系统"此应用程序的此线程应暂时停止响应事件并且不执行任何操作".这比聘请某人为你看钟表更好; 现在你雇了一个人为你睡觉.
这有效地利用了资源; 现在你正在雇人煮鸡蛋,而鸡蛋正在做饭,他们可以做吐司.
然而,编写程序以便将工作分解为小任务是一件痛苦的事.
这方面的缺点当然是C#5目前仅处于测试阶段.
注意:从Visual Studio 2012开始,C#5正在使用中.如果您使用的是VS 2012或更高版本,则可以使用异步编程.
Ada*_*man 14
如果你想在每8次迭代后休眠一下,试试这个:
for (int i = 0; i < 64; i++)
{
//...
if (i % 8 == 7)
Thread.Sleep(1000); //ms
}
Run Code Online (Sandbox Code Playgroud)
使用Thread.Sleep(来自System.Threading):
for(int i = 0 ; i<64;i++)
{
if(i % 8 == 0)
Thread.Sleep(1000);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
43001 次 |
| 最近记录: |