비동기 적으로 지연되는 작업을 가져 오는 데 문제가 있습니다. 수십만/수십만 개의 비동기 적으로 실행되는 스크립트를 실행해야하는 응용 프로그램을 작성하고 있습니다. C# 작업을 사용하여이 작업을 수행하고 때로는 특정 시퀀스를 실행하는 동안 스크립트가 제대로 실행 되려면 예상 된 상태에 도달하기 위해 외부 리소스를 기다려야합니다. 처음에는 Thread.Sleep()을 사용하여이 코드를 작성했지만 응용 프로그램 성능에 어뢰가되는 것으로 밝혀 졌으므로 비동기/비동기 수면을 기다리고 있습니다. 하지만 실제로 일시 중지를 기다릴 수는 없습니다! 누군가 이것을 설명 할 수 있습니까? 실행의C# async 작업에서 Task.delay 대기 중
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
어떻게 내가 비동기 기다려야합니까?