질문:
ForEach 컨텍스트 내에서 비동기 기능을 사용하는 것이 가능합니까? 시도된 구현을 설명하는 코드 조각은 다음과 같습니다.
using (DataContext db = new DataLayer.DataContext()) { db.Groups.ToList().ForEach(i => async { await GetAdminsFromGroup(i.Gid); }); }
그러나 실행 시 다음 오류가 발생합니다.
The name 'Async' does not exist in the current context
using 문을 캡슐화하는 메서드가 지정되었습니다. ~처럼 async.
정답:
List
이 특정 시나리오의 경우 대체 접근 방식을 추구하는 것이 좋습니다. 여기에는 각 요소를 비동기 작업으로 투영하는 작업이 포함됩니다. 이후에 이러한 작업의 완료를 비동기적으로 기다릴 수 있습니다.
using (DataContext db = new DataLayer.DataContext()) { var tasks = db.Groups.ToList().Select(i => GetAdminsFromGroupAsync(i.Gid)); var results = await Task.WhenAll(tasks); }
이 접근 방식은 ForEach와 함께 비동기 대리자를 활용하는 것보다 몇 가지 이점을 제공합니다.
위 내용은 비동기 작업을 ForEach와 함께 사용할 수 있으며 최선의 대안은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!