1、有这么一个需求,我需要每隔10秒钟处理一件事情,比较耗时,可能会处理两三秒。
最开始,我是使用的定时器,定时10秒处理一次。
这就出现了一个问题,定时一次运行,运行两三秒之后结束,然后只过了六七秒,又再次启动了(定时器固定间隔10秒)
这还算简单的,还有一种可能,定时处理的代码,处理不止两三秒,甚至10秒都处理不完,定时器会再次启动,这时候运行了两个一样的逻辑,这个还不能用加锁处理,不然上一次代码运行完,锁一解开马上运行下一次,太坑。。。
后来我换了个想法,用异步:
async void Loop()
{
while(true)
{
执行逻辑();
Task.Delay(10*1000);
}
}
搞了个死循环。
这个倒是可以了,执行一次不管用了十秒还是二十秒,下次启动都是在休息10秒后运行。。。
但是,我想知道,这个思路有没有问题。。。延迟10秒的时候,会不会消耗什么资源,会不会比定时器效率低很多。。
搞了个死循环。
这个倒是可以了,执行一次不管用了十秒还是二十秒,下次启动都是在休息10秒后运行。。。
但是,我想知道,这个思路有没有问题。。。延迟10秒的时候&