我遇到了一些问题,无法使任务异步延迟。我正在编写一个需要以数万/数十万个异步执行脚本的规模运行的应用程序。我使用C# Actions来实现这一点,有时,在执行特定序列期间,为了使脚本正常执行,它需要等待外部资源达到预期状态。起初,我使用Thread.Sleep()来实现,但这导致应用程序性能下降,因此我正在研究异步休眠的async/await。但是我无法让它真正等待暂停!有人能解释一下吗?
static void Main(string[] args)
{
var sync = new List<Action>();
var async = new List<Action>();
var syncStopWatch = new Stopwatch();
sync.Add(syncStopWatch.Start);
sync.Add(() => Thread.Sleep(1000));
sync.Add(syncStopWatch.Stop);
sync.Add(() => Console.Write("Sync:\t" + syncStopWatch.ElapsedMilliseconds + "\n"));
var asyncStopWatch = new Stopwatch();
sync.Add(asyncStopWatch.Start);
sync.Add(async () => await Task.Delay(1000));
sync.Add(asyncStopWatch.Stop);
sync.Add(() => Console.Write("Async:\t" + asyncStopWatch.ElapsedMilliseconds + "\n"));
foreach (Action a in sync)
{
a.Invoke();
}
foreach (Action a in async)
{
a.Invoke();
}
}
执行的结果如下:
如何使其异步等待?同步:999
异步:2