async 키워드없이 람다 식을 사용하는 LINQ 식은 인덱스를 지정할 수 있습니다. example의 경우 :async LINQ 쿼리에 인덱스를 추가하는 방법
var list = FileList.Select((file, index) => new { Index=index, Filename=file });
나는 비동기 키워드를 사용하는 동안 인덱스를 얻기 위해 노력하고 있어요. 예를 들면 :
await Task.WhenAll(urlList.Select(async url =>
{
byte[] urlContents = await GetWebPageAsync(url);
lock (Locker) { webResults.Add(URLContents); }
}));
내가 웹 페이지의 내용이 잠금 문을 사용하거나 인덱스 컬렉션 내에서 검색하는 대신 배열에 저장 될 수 있도록 인덱스가 취득하고자하는 이유.
위의 쿼리에 인덱스를 추가하려고하면 컴파일러 오류가 발생합니다.
위의 쿼리에서 인덱스를 지정하는 방법이 있습니까? 아니면 인덱스가있는 비동기 람다 식을 사용하도록 지원하는 다른 LINQ 식 (선택 제외)을 사용할 수 있습니까?
투영에 부작용을 일으키지 않아야합니다. 정상적인 코드에서는 충분히 좋지 않지만 다중 스레드 코드를 처리 할 때는 작업하기가 훨씬 어렵습니다. 투영을 수행하는 람다는 작업 결과를 반환하고 목록에 추가하지 않아야합니다. 그런 다음 반환 된 시퀀스의 결과를 사용할 수 있습니다. – Servy