gpt4 book ai didi

c# - 如何使用 DateTime 类测量耗时?

转载 作者:太空狗 更新时间:2023-10-29 20:45:56 24 4
gpt4 key购买 nike

我在这里遇到了一个奇怪的行为。控制永远不会脱离 do-while 循环。在调试时,我发现变量 interval 的值在某些循环中减少了,而不是增加了!我在这里遗漏了一些明显的东西,但无法弄清楚。

static void Main(string[] args)
{
int interval = 0;
DateTime startTime = DateTime.Now;

//Task1(); //Task1 can take 4-8 seconds to complete

do
{
Thread.Sleep(100);
interval = (DateTime.Now - startTime).Milliseconds;
} while (interval < 10000); //wait for at-least ten seconds from program start, before executing task2

//Task2();
}

最佳答案

不要使用 DateTime 来测量时间间隔。

使用 Stopwatch 类,它正是为此目的而设计的

var clock = new Stopwatch();
clock.Start();
do
{
// do something
}
while (clock.ElapsedMilliseconds < 10000)
clock.Stop();

注意:当然,您可以使用 DateTime 来测量时间,但如果您需要小于秒的精度,那么 Stopwatch 是完成这项工作的正确工具。
并且 Stopwatch 具有更易读且更易于使用的时间测量方法

在您的特定情况下:“在执行任务 2 之前,从程序开始至少等待十秒”您可以使用异步方法

var task1 = StartTask1();

await Task.Delay(10000); // next line will be executed approximately after 10 s

var task2 = StartTask2();

关于c# - 如何使用 DateTime 类测量耗时?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45959959/

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