问题描述
由于async/await是.Net4.5关键字,现在想用.Net2.0实现同样的功能,该如何改写?这是一个定时器的启动方法。//启动PreciseTimerpublicasyncvoidStart(){if(running)return;running=true;Reset();timestamp=RawTicks+interval;while(running){//如果把下面的timestamp=RawTicks+interval放在此行,精确度会降低awaitTask.Delay(delay);while(RawTicks<timestamp)//其实连续调用Task.Delay(0)会比Thread.Sleep(0)和Thread.Yield()//花费的资源更多一些,只是Thread.Sleep(0)和Thread.Yield()都不是//「awaitable」的awaitTask.Delay(0);timestamp=RawTicks+interval;if(Elapsed!=null)Elapsed(this,eventArgs);}}
解决方案
解决方案二:
解决方案三:
改写起来费事了,不仅async,Task也是.NET4.0才有的。
时间: 2024-11-08 21:55:38